我有一些重复的节点,都带有标签标签。我对重复的意思是我有两个具有相同名称属性的节点,例如:
{ name: writing, _id: 57ec2289a90f9a2deece7e6d},
{ name: writing, _id: 57db1da737f2564f1d5fc5a1},
{ name: writing }
_id
字段不再使用,因此在所有效果中这三个节点都是相同的,只是它们每个都有不同的关系。我想做的是:
MATCH (n:Tag)
WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count
WHERE count > 1
RETURN name, nodelist, count
这可以通过密码查询来实现吗?或者我必须用某种编程语言制作脚本吗? (这是我试图避免的)
最佳答案
APOC Procedures 有一些 graph refactoring procedures 可以提供帮助。我认为 apoc.refactor.mergeNodes()
应该可以解决问题。
请注意,除了将所有关系从其他节点转移到列表的第一个节点之外,它还会将其他节点的任何标签和属性应用到第一个节点上。如果这不是您想要做的事情,那么您可能必须从其他节点收集传入和传出关系,并改用 apoc.refactor.to()
和 apoc.refactor.from()
。
这是合并节点的查询:
MATCH (n:Tag)
WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count
WHERE count > 1
CALL apoc.refactor.mergeNodes(nodelist) YIELD node
RETURN node
关于Neo4j 密码 : Merge duplicate nodes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42800137/