2013-04-07 4 views
8

Come è possibile che in cypher abbia una query come: "restituire tutte le persone che segue anna che non seguono nessuno"?"Nessuna relazione" nella query Cypher

Nel seguente (dove ho l'ID del nodo di partenza chiarito dopo la query) la "r è nullo" -parte non sembra funzionare:

START o=node({id}) 
MATCH (a)-[:follows]->(b)-[r]->(c) 
WHERE a.name="anna" and r is null 
RETURN b 

In questo momento, "segue" è l'unica relazione che ho. Ma anche

START o=node({id}) 
MATCH (a)-[:follows]->(b)-[:follows]->(c) 
WHERE a.name="anna" and c is null 
RETURN b* does not work. 

By non funziona voglio dire: non ottengo alcun risultato, anche se ci dovrebbe essere qualche.

risposta

18

Non sarà match un modello se non esiste. match è per trovare le cose, non per non trovare le cose. È possibile inserire un predicato del genere nella clausola where:

START a=node({id}) 
MATCH (a)-[:follows]->(b) 
WHERE not(b-[:follows]->()) 
RETURN b