neo4j - 在neo4j中合并两个子图
问题描述
我有以下两个子图
(root1) (root2)
/ | \ / | \
/ | \ / | \
/ | \ / | \
(a1) (a2) (a3) (b1) (b2) (b3)
我想通过合并以上两个来创建一个新图表
(root)
/ / / \ \ \
(a1)(a2)(a3)(b1)(b2)(b3)
有没有办法只替换一棵树中的一个根节点,而不是迭代一棵树的所有子节点,断开当前根节点并连接到新根节点?
解决方案
您可以使用apoc.refactor.mergeNodes将节点列表中的节点“合并”到列表中的第一个节点,这基本上包括将所有关系“移动”到第一个节点。您应该阅读可用的强大选项,以获得您想要的结果。
这是一个非常简单的例子。此查询将合并root2
到root1
(覆盖root1
与 中的属性同名的所有属性root2
),并且本质上将所有属性“移动”root2
到root1
:
MATCH (root1), (root2)
WHERE root1.id = 123 AND root2.id = 234
CALL apoc.refactor.mergeNodes([root1, root2], {}) YIELD node
RETURN node
您可以在地图中指定选项{}
来修改上述默认行为。
推荐阅读
- postgresql - postgresql DROP DATABASE 不与具有所有者角色的用户一起使用
- flutter - Flutter,如何处理键盘快捷键
- azure-data-factory - Azure 数据工厂 SHIR - 本地 Oracle 链接服务的问题
- speech-recognition - 使用自然语言理解和连续语音识别来发现命名实体、实体链接并帮助编写自定义 DSL 模型文件
- php - 在 CodeIgniter 中以 PDF 格式下载 PHP HTML 内容无法正确显示
- python - 如何从与配置文件对应的数据框中提取数据?
- python-3.x - 如何远程连接wifi CCTV
- c# - 如何在一种情况下对字符串输入使用相同的变量,在另一种情况下使用 int 输入?(C#)
- talend - Talend Cloud Studio:查找映射问题
- javascript - Safari 不记得“返回”按钮上的滚动位置