使用Cypher合并Neo4j中的结果/列表

Afs*_*hin 3 neo4j cypher

想象一下,我的查询结果在具有不同名称的节点中,但是在下一个查询中,我想搜索上一个结果的合并版本。如何合并两个列表或两组节点?例如,假设我有

(:class1)->(c1:class2)->(:class3)-(:class4)->(c2:class2)

然后我想基于c1.name和c2.name合并中的不同元素进行匹配。

Tez*_*zra 7

我在某处学到的使这项工作成功的诀窍是

MATCH (:class1)-->(c1:class2)-->(:class3)--(:class4)-->(c2:class2)
WITH collect(c1)+collect(c2) as nodez
UNWIND nodez as c
RETURN c
Run Code Online (Sandbox Code Playgroud)

请注意,您不能以这种方式组合不同类型的列表(例如,节点+关系)。它们必须都是相同的类型(例如,所有节点或所有关系)。如果要在汇总列表中混合类型,则需要先将所有内容转换为相同类型(可能是map)。