Orientdb: Encuentre todos los vértices que no tienen vértice vecino directo de una clase dada
-
28-10-2019 - |
Pregunta
Usando el lenguaje de consulta de OrientDB, ¿cómo puede encontrar todos los vértices en el clúster? a
que no tienen un borde saliente que termine en un vértice de clase b
(es decir, ningún vértice vecino directo de clase b
)? No importa si tienen otros bordes salientes.
Solución
Si tienes una clase A mapeado para agrupar A, puedes hacer:
select from A where not( out.in.@class in ['b'] )
Eso significa cruzar la propiedad "fuera" de un registro (como bordes), luego la propiedad "in" (el vértice) y luego obtener el nombre de clase (@class). He usado el operador en en lugar de = (es igual) porque "out.in.@class" devuelve una colección de nombres de clases.
Si quieres tener una clase y tienes que pasar por el clúster un clúster de uso: sintaxis:
select from cluster:A where not( out.in.@class in ['b'] )
He probado contra el último 1.0rc8-snapshot y funciona.