neo4j - 在(尚未)现有节点之间创建关系
问题描述
我正在尝试通过neo4j-stream
插件将数据从 Kafka 摄取到 Neo4j。目前我们正在试验该CUD
策略。
我想知道我们应该如何处理相互关联的数据。假设我们将 100 个人从 Kafka 流式传输到 Neo4j。当person(id:1)
与 有关系is_friends_with
时,在创建节点 for 之前,person(id:50)
我们无法创建这种关系person(id:50)
。
但是,我们无法控制事件来自 Kafka 的顺序。
因此,当人员数据到达时,我们将创建以下 CUD 数据:
- 为
person(id:1)
- 建立关系
is_friends_with(person1, person50)
。 - ...
- 为
person(id:50)
不出所料,当我们按此顺序摄取事件时,这种关系就消失了。
我们该如何处理呢?
解决方案
我认为这是使用 MERGE 的典型案例。
每次你有一个关系(有开始和结束节点)你做
MERGE (n:Person {id:foo})
MERGE (m:Person {id:bar})
MERGE (n)-[:is_friends_with]-(m)
关系的合并没有方向,以避免在 n 和 m 以不同顺序到达的情况下出现双向模式。
推荐阅读
- rest - 我应该在自己的项目之间使用 Web API 吗?
- javascript - JS:如何计算字母
- node.js - 使用 ExpressJS 添加多个 flash
- javascript - 反应路由器没有响应 - 没有错误
- c - 程序的编译是否在执行前将一些数据存储在缓存中?(C,Linux)
- firebase - 如何将按钮添加到通知 FCM ionic3
- automapper - 识别自动映射器中的映射字段
- vb.net - 如何使用 vb.net 在访问中更新特定行和列中的值
- python - python - Not Found 在服务器上找不到请求的 URL
- laravel - 如何获得坚如磐石的雄辩关系?