2013-04-07 14 views
8

Jak to jest możliwe w zapytaniu typu: "zwrócić wszystkie osoby, za którymi podąża anna, które nie śledzą nikogo"?"Brak relacji" w zapytaniu kodowym

Poniżej (gdzie mam identyfikator węzła początkowego wykonane jasne po zapytaniu) „R jest pusta” -part nie wydają się działać:

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

teraz „następuje” jest jedyną relacją, jaką mam. Ale także

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

By nie działa to znaczy: ja nie dostać żadnych wyników, chociaż nie powinno być pewne.

Odpowiedz

18

To nie będzie wzór, jeśli nie istnieje. match służy do wyszukiwania rzeczy, a nie do ani do znajdowania rzeczy. Można umieścić predykat w ten sposób w klauzuli :

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