如何在 Neo4j 3.5 中修改 Cypher 查询以返回具有虚拟关系的结果?

问题描述 投票:0回答:1

这是我最初的 Cypher 声明:

WITH ['aab40c4d65d5c0a428ed84dc0109b0c4', '000415fee2b0272cdcc2439f521b2e2e'] AS param
CALL apoc.create.vNode(['ent'], {nodeid: 'test'}) YIELD node AS a
MATCH (first:ent) WHERE first.nodeid IN param
CALL apoc.create.vRelationship(first, 'teninvmerge', {conprop: "0.5"}, a) YIELD rel AS b
MATCH p = (a)-[b]-(first:ent)<-[inv:teninvmerge*1..5]-(end)
RETURN p

可以看到,我创建了一条虚拟边,通过这个虚拟边,我进行了遍历查询。但是,如果我将最终语句更改为

MATCH p = (a)<-[inv:teninvmerge*1..5]-(end)
,则不会得到任何结果。我想知道如何修改我的 Cypher,以便
MATCH p = (a)<-[inv:teninvmerge*1..5]-(end)
也能产生结果。enter image description here

我可以通过虚拟边获得遍历结果。

neo4j
1个回答
0
投票

您创建的虚拟关系:teninvmerge 在数据库中不存在,因此您可以更改查询以返回 a、b 和first。

WITH ['aab40c4d65d5c0a428ed84dc0109b0c4', '000415fee2b0272cdcc2439f521b2e2e'] AS param
CALL apoc.create.vNode(['ent'], {nodeid: 'test'}) YIELD node AS a
MATCH (first:ent) WHERE first.nodeid IN param
CALL apoc.create.vRelationship(first, 'teninvmerge', {conprop: "0.5"}, a) YIELD rel AS b
//MATCH p = (a)-[b]-(first:ent)<-[inv:teninvmerge*1..5]-(end)
//rel: teninvmerge does not exists
RETURN a, b, first
© www.soinside.com 2019 - 2024. All rights reserved.