[英]Finding nodes that do not have specific relationship (Cypher/neo4j)
我有一個neo4j數據庫,具有以下內容:
a:Foo
b:Bar
大約10%的db有(a)-[:has]->(b)
我只需要獲得那些沒有這種關系的節點!
以前做()-[r?]-()
會很完美! 然而,它不再受支持:(而是,正如他們建議的那樣
OPTIONAL MATCH (a:Foo)-[r:has]->(b:Bar) WHERE b is NULL RETURN a
給我一個null結果,因為可選匹配需要BOTH節點在那里或BOTH節點不在那里......
那么我怎么得到所有的a:Foo
沒有附加到b:Bar
a:Foo
節點?
注意:數據集是數百萬個節點,因此查詢需要高效或以其他方式超時。
那就是
MATCH (a:Foo) WHERE not ((a)-[:has]->(:Bar)) RETURN a;
如果您正在尋找所有單身人士/孤兒,這也有效:
MATCH (a:Foo) WHERE not ((a)--()) RETURN a;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.