OrientDB: trova tutti i vertici che non hanno vertice di vicino diretto di una determinata classe
-
28-10-2019 - |
Domanda
Usando il linguaggio delle query di OrientDB, come è possibile trovare tutti i vertici in cluster a
che non hanno un vantaggio in uscita che termina in un vertice di classe b
(cioè nessun vertice di classe diretta della classe b
)? Non importa se hanno altri bordi in uscita.
Soluzione
Se hai una classe A mappata per cluster A puoi fare:
select from A where not( out.in.@class in ['b'] )
Ciò significa attraversare la proprietà "out" di un record (come bordi), quindi la proprietà "in" (il vertice) e quindi ottenere il nome della classe (@class). Ho usato l'operatore In invece di = (uguali) perché "out.in.@class" restituisce una raccolta di nomi di classe.
Se vuoi non avere una classe e devi passare attraverso il cluster a cluster: sintassi:
select from cluster:A where not( out.in.@class in ['b'] )
Ho testato contro l'ultimo 1.0rc8-snapshot e le opere.