OrientDB: Trouver tous les sommets qui n'ont pas de sommet voisin direct d'une classe donnée

StackOverflow https://stackoverflow.com/questions/8862177

  •  28-10-2019
  •  | 
  •  

Question

En utilisant le langage de requête d'OrientDB, comment trouver tous les sommets du cluster a qui n'ont pas d'arête sortante se terminant par un sommet de la classe b (c'est-à-dire pas de sommet voisin direct de la classe b)? Peu importe s'ils ont d'autres bords sortants.

Était-ce utile?

La solution

Si vous avez une classe A mappée sur le cluster a, vous pouvez faire:

select from A where not( out.in.@class in ['b'] )

Cela signifie barrer la propriété "out" des enregistrements A (en tant qu'arêtes), puis la propriété "in" (le sommet) et obtenir le nom de la classe (@class).J'ai utilisé l'opérateur IN au lieu de= (equals) car "out.in. @ class" renvoie une collection de noms de classes.

Si vous ne voulez pas de classe A et que vous devez passer par le cluster A, utilisez cluster: syntax:

 select from cluster:A where not( out.in.@class in ['b'] )

J'ai testé contre le dernier 1.0rc8-SNAPSHOT et fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top