我正在使用 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?