我在玩 neo4j 并注意到所有 Cypher 查询都需要在START
子句中有一个起点。我想知道如何使用 Cypher 找到所有断开连接的节点?
谢谢
我在玩 neo4j 并注意到所有 Cypher 查询都需要在START
子句中有一个起点。我想知道如何使用 Cypher 找到所有断开连接的节点?
谢谢
如果您的所有节点都被索引(例如通过自动索引),您可以使用索引查询作为起点,然后找到那些没有传出关系的节点。
start n=node:node_auto_index("id:*")
match n-[r?]->m
where r is null
return n
现在我宁愿使用:
start n=node:node_auto_index("id:*")
where not (n-->m)
return n
我使用这样的东西,但只有当我使用 spring-data-neo4j 时:
start n = node:__types__(className="com.app.entity.Model")
// match, where...
return n
希望有帮助!
使用 Neo4j v3.0+,我只使用;
MATCH (n)
WHERE NOT (n)--()
RETURN n
(或其变体)。查询相当快。
你不能。当今的 Cypher 无法进行图形全局查询。