【问题标题】:Neo4j is duplicating relationsNeo4j 正在复制关系
【发布时间】:2016-09-22 07:15:50
【问题描述】:

我试图一次创建多个关系,所有关系都从一个节点出来,进入多个其他节点。我正在尝试使用 MERGE 来匹配/创建节点,然后 CREATE 一次创建多个关系。问题是由于某种原因关系被复制,每个关系被创建两次......帮助?

我的 JSON 请求:

{
"query":"MERGE (n:person {subject:'testSubject'}) MERGE (n1:node {subject:'7f975f24-acc9-4400-9b2f-f7fd955425b7'}) MERGE (n2:node {subject:'a8d242b0-5cce-4c00-8912-885c97f917a3'}) ... MERGE (n60:node {subject:'68ee8e74-205a-4ba8-b6d0-6edb8d907912'}) CREATE (n)-[r1:relationToNode { json1 }]->(n1) CREATE (n)-[r2:actsIn { json2 }]->(n2) ... CREATE (n)-[r60:actsIn { json60 }]->(n60)",
"params":{
    "json1":{...}, "json2":{...}, ..., "json60":{...}
}

}

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    您是否可能两次运行此查询?如果是这样,您可以通过使用MERGE 而不是CREATE 来避免重复关系。

    【讨论】:

    • 不,我自己通过邮递员运行它。我不能使用 MERGE 来创建关系,因为我可能有其他关系(相同标签的)连接到相同的节点。使用带有 MERGE 查询的参数也可能会有点问题
    【解决方案2】:

    解决了!!显然neo4j(2.2.3)为每个重复节点复制所有关系..我在MERGE部分有一个重复节点,这导致每个关系被创建两次..当我的数据库包含三倍节点时我尝试相同的查询时,关系被创建了 3 次。通过在主题字段上使用唯一的 CONSTRAINT 解决,显然 MERGE 本身不是线程安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多