我有一些重复的节点,都带有标签Tag。我重复的意思是我有两个具有相同name属性的节点,例如:
{ 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程序具有一些有助于图形重构的程序。我认为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句