我正在尝试使用Neo4J执行Cypher查询。 我已经在2个节点之间执行了最短路径,但我想知道是否可以用更多节点执行。
Ex有两个节点:
MATCH (personA:Person { contactId: 1000073595058 }),(personB:Person { contactId: 1000295524418 }), p = shortestPath((personA)-[*..30]-(personB)) RETURN p
Ex有3个节点:
MATCH (personA:Person { contactId: 1000073595058 }),(personB:Person { contactId: 1000295524418 }),(personC:Person { contactId: 1000331998948 }), p = shortestPath((personA)-[*..30]-(personB)-[*..30]-(personC)) RETURN p
但是当我执行时返回一个异常。我怎么能这样做?
答案 0 :(得分:2)
两个节点之间只能MATCH
shotestPath
。您必须拆分查询:
MATCH (personA:Person { contactId: 1000073595058 }),
(personB:Person { contactId: 1000295524418 }),
(personC:Person { contactId: 1000331998948 })
WITH personA, personB, personC
MATCH p = shortestPath((personA)-[..30]-(personB)
MATCH p2 = shortestPath((personB)-[..30]-(personC)
RETURN p, p2
根据您对结果的处理方式,您可以使用聚合功能,例如从两个路径获取所有节点:
...
RETURN nodes(p)+nodes(p2)