Neo4j,如何 return 节点和关系,其中两个节点之间的路径多于一个
Neo4j,How to return nodes and relations where pathes between two nodes more than one
创建示例数据,实际数据有50,000 Persons, 10,000 Company.
CREATE(p1:Person{name:"p1"})
CREATE(p2:Person{name:"p2"})
CREATE(p3:Person{name:"p3"})
CREATE(c1:Company{name:"c1"})
CREATE(c2:Company{name:"c2"})
CREATE (p1)-[:STAFF]->(c1)
CREATE (p1)-[:STAFF]->(c2)
CREATE (p2)-[:STAFF]->(c1)
CREATE (p2)-[:STAFF]->(c2)
CREATE (p3)-[:STAFF]->(c1)
我想找到节点和关系,其中两个人节点之间的路径多于一个,在此示例中 (p1,p2)。
我尝试用 查询,但速度很慢。
我会试试这个:
MATCH path=(p1:Person)-[:STAFF]->(c:Company)<-[:STAFF]-(p2:Person)
WHERE id(p1) > id(p2)
WITH p1,p2, COLLECT(path) AS paths
WHERE SIZE(paths) > 1
RETURN paths
创建示例数据,实际数据有50,000 Persons, 10,000 Company.
CREATE(p1:Person{name:"p1"})
CREATE(p2:Person{name:"p2"})
CREATE(p3:Person{name:"p3"})
CREATE(c1:Company{name:"c1"})
CREATE(c2:Company{name:"c2"})
CREATE (p1)-[:STAFF]->(c1)
CREATE (p1)-[:STAFF]->(c2)
CREATE (p2)-[:STAFF]->(c1)
CREATE (p2)-[:STAFF]->(c2)
CREATE (p3)-[:STAFF]->(c1)
我想找到节点和关系,其中两个人节点之间的路径多于一个,在此示例中 (p1,p2)。
我尝试用
我会试试这个:
MATCH path=(p1:Person)-[:STAFF]->(c:Company)<-[:STAFF]-(p2:Person)
WHERE id(p1) > id(p2)
WITH p1,p2, COLLECT(path) AS paths
WHERE SIZE(paths) > 1
RETURN paths