当我搜索具有特定邮政编码的节点时:
MATCH (z:ZipCode) WHERE z.zipcode = "2014 AAE" RETURN z.zipcode
我得到重复:
z.zipcode
2014 AAE
2014 AAE
当我搜索某个邮政编码的关系时:
MATCH p=(z:ZipCode)-->() WHERE z.zipcode = "2014 AAE" RETURN p
我得到一个指向房屋节点的单个邮政编码节点 2014 AAE
518Q
如何合并具有相同属性值的zipcode节点,但保留zipcode的所有关系完整?
Edit:
在cybersam的回答后,我构建了一个查询 . 这是将节点与APOC结合的方法吗?
MATCH (z1:ZipCode)-->(), (z2:ZipCode)-->()
WHERE z1.zipcode = z2.zipcode
AND ID(z1) <> ID(z2)
WITH COLLECT([z1,z2]) AS zs
CALL apoc.refactor.mergeNodes(zs) YIELD node
RETURN node;
我得到这个错误:
Type mismatch: expected Collection<Node> but was Collection<Collection<Node>> (line 5, column 31 (offset: 160))
"CALL apoc.refactor.mergeNodes(zs) YIELD node"
1 回答
[更新]
旁白:您有2个具有相同邮政编码的节点,但这些节点中只有一个具有关系 . 这解释了迄今为止的结果 .
在neo4j 3.x中,您可以安装APOC plugin并使用
mergeNodes()
过程,该过程接受一组节点 . 它将第二个节点和最后一个节点的属性和关系合并到第一个节点上,并删除第二个节点到最后一个节点 .例如: