在(尚未)现有节点之间创建关系

时间:2020-09-14 12:03:55

标签: neo4j

我正在尝试通过neo4j-stream插件将数据从Kafka导入Neo4j。 目前,我们正在尝试CUD策略。

我想知道我们应该如何处理互连的数据。 假设我们将100个人从Kafka传送到Neo4j。 当person(id:1)is_friends_with之间有一个关系person(id:50)时,直到创建person(id:50)的节点,我们才能创建此关系。

但是,我们无法控制事件来自Kafka的顺序。

因此,当人员数据到达时,我们将创建以下CUD数据:

  • person(id:1)创建节点
  • 创建关系is_friends_with(person1, person50)
  • ...
  • person(id:50)创建节点

不足为奇的是,当我们按此顺序摄取事件时,这种关系就消失了。

我们如何处理呢?

1 个答案:

答案 0 :(得分:2)

我认为这是使用MERGE的典型情况。

每当您有一个关系(具有开始和结束节点)时,便会这样做

MERGE (n:Person {id:foo})
MERGE (m:Person {id:bar})
MERGE (n)-[:is_friends_with]-(m)

为了避免在n和m以不同顺序到达的情况下出现双向模式,关系的合并没有方向。