neo4j - 无法使用 MATCH 和 MERGE 匹配和创建节点
问题描述
我试图通过首先找到任何现有节点(使用 MATCH)然后通过重用现有节点或在任何节点不存在时创建新节点来创建关系(使用 MERGE)来创建节点层次结构。
有人可以解释为什么这段代码没有做任何事情:
CALL apoc.load.jdbc(...) YIELD row
MATCH (t:Taxonomy {key:row.TermKey})
MATCH (tp:Taxonomy {key:row.ParentKey})
MERGE (t)-[:CHILD_OF]->(tp)
但这一个可以完成工作:
CALL apoc.load.jdbc(...) YIELD row
MERGE (t:Taxonomy {key:row.TermKey})
MERGE (tp:Taxonomy {key:row.ParentKey})
MERGE (t)-[:CHILD_OF]->(tp)
我正在查看 Neo4j 手册,他们的示例确实如此,但由于某种原因对我不起作用。 Neo4j 手册截图
解决方案
MATCH 子句只查找节点或模式是否存在,如果找到它返回节点或模式,它不创建节点或模式,另一方面,MERGE 子句查找节点或模式,如果不存在存在它创造一个。
推荐阅读
- opengl - 使用法线贴图渲染会导致依赖于旋转的光照
- mysql - 如何在按日期时间排序的 mySQL 表中查找最后一个值?
- javascript - 需要帮助编写一个函数以使网格内的任何框都可点击并填充色轮
- json - 在将 json 转换为 Dart 中的对象列表时如何避免这么多的转换和映射?
- java - 约束布局在层次结构中返回错误的 id
- firebase - 是否有 Firebase API 端点来获取帐户使用情况?
- ruby-on-rails - 例如,如何更改“User.group(:age).count”的输出?
- javascript - Javascript - 捕获重复序列?
- mongodb - MongoDB查询子文档$gt
- css - 如何使用scrollMagic一张一张翻转卡片