【问题标题】:Can we use MERGE in Cypher to update a node property?我们可以在 Cypher 中使用 MERGE 来更新节点属性吗?
【发布时间】:2024-05-29 19:20:02
【问题描述】:

我正在将一个数据集聚合到 neo4j 图形中,并使用 py2neo 为它编写了一个 python 脚本,我通过它执行密码查询。

假设我有一个类型为“item”的节点,其属性为“type”和“count”,假设我有 5 种不同类型的项目。

我的脚本遍历数据集,这就是它的作用:

  1. 检查该类型的“item”节点是否存在。
  2. (a) 如果存在,则提取其“计数”,将其增加 1 并更新属性值 (b) 如果不存在,则创建当前“类型”的“项目”节点,并为其分配“计数”为 1。 直到现在我还没有使用 MERGE。

我知道单独的步骤 1 和 2(b) 可以使用 MERGE 合并。这意味着 cypher 将检查模式

(n:item{type:"detergent", count:1})

如果它不存在,将创建。

我想从密码大师那里知道的是,我可以使用 MERGE 来更新属性值吗? 具体来说,如果对数据集进行了 10 次迭代,如果洗涤剂的计数变为 4,那么从我现在使用的程序中,我是否可以替换该程序以使用 MERGE 以便解决以下目的:

1) 如果去污剂出现在迭代中,如果去污剂的节点不存在,cypher 应该为去污剂创建一个计数为 1 的节点。

2) 如果去污剂出现在迭代中,如果去污剂的节点已经存在,cypher 应该将计数属性增加 1。

【问题讨论】:

    标签: python neo4j merge cypher


    【解决方案1】:

    你可以试试:

    MERGE (n:item{type:"detergent") 
    ON CREATE SET n.count=1 
    ON MATCH SET n.count=n.count+1
    

    ON CREATE : 当节点不存在时 ON MATCH : 在图中找到节点时

    希望有所帮助。

    【讨论】:

    • 完美 :) 谢谢..!