Neo4j を使用して、特定のノード「a」に接続されていないノードを見つけようとしています。私がこれまでに持っているクエリは次のとおりです。
MATCH p = shortestPath((a:Node {id:"123"})-[*]-(b:Node))
WHERE p IS NULL
RETURN b.id as b
そのため、a と b の間の最短経路を見つけようとします。パスが見つからない場合は、そのノードの ID を返します。ただし、これによりクエリが数分間実行され、メモリが不足するとクラッシュします。この方法が機能するかどうか、さらに効率的な方法があるかどうか疑問に思っていました。どんな助けでも大歓迎です!
編集:
MATCH (a:Node {id:"123"})-[*]-(b:Node),
(c:Node)
WITH collect(b) as col, a, b, c
WHERE a <> b AND NOT c IN col
RETURN c.id
つまり、col (collect(b)) には a に接続されているすべてのノードが含まれているため、c が col にない場合、c は a に接続されていませんか?