Neo4j遍历表现

我想执行无向遍历以提取通过某种关系连接的所有ID

当我执行以下查询时,它足够快地返回值

MATCH path=(s:Node {entry:"a"})-[:RelType*1..10]-(x:Node) 
RETURN collect(distinct ID(x))

无论如何

MATCH path=(s:Node {entry:"a"})-[:RelType*]-(x:Node) 
RETURN collect(distinct ID(x))

需要花费大量的时间.我怀疑通过使用*它搜索从s到x的每条路径,但由于我只想要id,所以这些路径可以被丢弃.我真正想要的是BFS或DFS搜索从s中查找连接节点.

两个查询都返回完全相同的结果,因为没有最短路径高于5的元素(仅在测试示例中!).

最佳答案 您是否在创建索引上添加了索引:节点(条目)?

此外,根据路径中每个节点的rel的数量,您可以获得可能返回的图表中的rel 10 ^(或一般rels ^步骤)路径.

你能先尝试一个较小的上限,比如3,并从那里开始工作吗?

当你获得周期时,离开方向真的很痛.

你还可以尝试做的是:

MATCH path=(s:Node {entry:"a"})-[:RelType*]->(x:Node) 
RETURN ID(X)

并传输结果并在客户端中执行唯一性

或者如果你不想在客户端做唯一性

MATCH path=(s:Node {entry:"a"})-[:RelType*]->(x:Node) 
RETURN distinct ID(X)
点赞