当我搜索带有某个邮政编码的节点时:
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节点与相同的属性值合并, 但保留所有关系完整的邮政编码?
修改
在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"
答案 0 :(得分:2)
[增订]
旁白:您有2个节点具有相同的邮政编码,但这些节点中只有一个有关系。这解释了迄今为止的结果。
在neo4j 3.x中,您可以安装APOC plugin并使用mergeNodes()
过程,该过程需要一组节点。它将第二个节点和最后一个节点的属性和关系合并到第一个节点上,并删除第二个节点到最后一个节点。
例如:
MATCH (z:ZipCode)
WHERE z.zipcode = "2014 AAE"
WITH COLLECT(z) AS zs
CALL apoc.refactor.mergeNodes(zs) YIELD node
RETURN node;