Neo4j:在遍历期间两次访问同一边缘


WITH a
MATCH p=(a)-[:rel1]->(:B)-[:rel2]->(:C)-[:rel3]->(d)<-[:rel3]-(:C)<-[:rel2]-(:B)<-[:rel1]-(a)
WITH d, ... do more things

看起来 d 和 :C 之间共享 rel3 的 d 节点没有返回。IE p 不包括闭环越过同一边时的路径(当"连接点"看起来像"键"而不是"圆"时(。我认为这是图形数据库的基础 - 您不能在同一路径中遍历相同的边缘两次?有没有办法从 a 开始并找到与 :B 和 :C 相关的所有 d 节点,包括那些具有相同 rel3 但不同的 rel1 和 rel2,即不删除那些 rel3 相同的 d 节点?

匹配模式的唯一性记录在密码手册中。

您可以考虑拆分为多个 MATCH 子句,但如果没有查询尝试实现的更好示例,就很难提供确切的解决方案

是的,我可以确认处理它的方法是:

p=(a)-[:rel1]->(:B)-[:rel2]->(c)<-[:rel2]-(:B)<-[:rel1]-(a), (c)-[:rel3]->(d)

最新更新