【问题标题】:Adding a relationship in Cypher if no existing relation regardless the relationship properties无论关系属性如何,如果没有现有关系,则在 Cypher 中添加关系
【发布时间】:2020-05-03 07:03:50
【问题描述】:

如果关系不存在,我正在尝试在两个节点之间添加新关系。

Match (p:Partner)-[:HAS_COMMISSIONS]->(cc:CommissionConfig),
  (gc:GroupConfig)
   where gc.server="3"
    Merge(cc)-[:BELONGS_TO_ADA_GROUP{aa:100,bb:200}]->(gc)

如果该查询不存在,则此查询有效并添加一个关系,但如果我重新运行相同的查询并更改这些值BELONGS_TO_ADA_GROUP{aa:300,bb:300},将添加一个新关系,因为该关系有一个新属性。 我们可以强制 MERGE 忽略属性吗?仅当没有关系时才需要添加关系,而不管关系值如何。

【问题讨论】:

  • 你可以试试这个吗?匹配 (p:Partner)-[:HAS_COMMISSIONS]->(cc:CommissionConfig), (gc:GroupConfig) where gc.server="3" Merge(cc)-[r:BELONGS_TO_ADA_GROUP]->(gc) 与 r 集r.aa=100, r.bb=200

标签: neo4j cypher


【解决方案1】:

仅当合并导致创建时才设置属性:

MATCH (p:Partner)-[:HAS_COMMISSIONS]->(cc:CommissionConfig),
      (gc:GroupConfig)
WHERE gc.server = '3'
MERGE(cc)-[r:BELONGS_TO_ADA_GROUP]->(gc)
  ON CREATE SET r.aa=100, r.bb=200 

【讨论】:

    猜你喜欢
    • 2017-07-31
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多