这与how to find all the longest paths with cypher query?无关,并且与Find all relationship disjoint longest paths in cypher/traversal API ordered by size中的答案有些相关,除了我的条件有点不同:
我想编写一个cypher查询,返回路径,其节点集合是"unique",因为路径中没有两个节点共享相同的 name
属性 .
这是一个示例图:
和它的密码:
CREATE (a1:Node {name: 'A', time:1}),
(c1:Node {name: 'C', time:2}),
(b1:Node {name: 'B', time:3}),
(d1:Node {name: 'D', time:4}),
(c2:Node {name: 'C', time:5}),
(a2:Node {name: 'A', time:6}),
(a3:Node {name: 'A', time:7}),
(b2:Node {name: 'B', time:8}),
(d2:Node {name: 'D', time:9})
CREATE (a1)-[:NEXT]->(b1)-[:NEXT]->(c2)-[:NEXT]->(a2)-[:NEXT]->(b2),
(a2)-[:NEXT]->(a3)-[:NEXT]->(d2),
(c1)-[:NEXT]->(b1),
(d1)-[:NEXT]->(c2)
RETURN *
在此图中,以下路径被认为是最长且唯一的:
(a1)-->(b1)-->(c2)
(c1)-->(b1)
(d1)-->(c2)-->(a2)-->(b2)
(a3)-->(d2)
不应从查询返回的路径的一些示例是
-
(c1)-->(b1)-->(c2)
因为它包含两个名称为"C"的节点实例 -
(a2)-->(b2)
因为它包含在更大的路径中(d1)-->(c2)-->(a2)-->(b2)
任何帮助将非常感激 .
1 回答
Upd: (让我们尝试添加优雅)