Neo4j - 从 JSON 动态更新关系属性

Neo4j - Update relationship properties dynamically from JSON

我想从 JSON 键值动态地 create/update 现有 Neo4j 关系对象的属性(即不列出所有 SET 语句),但这会创建一个新的关系每次更新传递一个新的 id。我只想保持一种关系

JSON 对象“properties.json”

{"prop1":"val1","prop2":"val2"}

使用动态属性查询,尽管创建了许多关系:

CALL apoc.load.json("properties.json") YIELD value as props
WITH props
MERGE (client:Client {name: 'Alice'})-[r:KNOWS]->(client:Client {name: 'John'})
ON CREATE
SET r = props // I want such an expression

结果(如果 r 已经存在):

id> 123
prop1   val1
prop2   val2

id> 124
prop1   val1
prop2   val2

但是当静态设置属性时,它就起作用了。

使用创建一个关系的静态属性查询:

...
ON CREATE
SET
 r.prop1 = "val1",
 r.prop2 = "val2"
// But I don’t want this explicit list

结果令人满意(如果 r 已经存在):

id> 125
prop1   val1
prop2   val2

知道如何解决这个问题吗?

这就是正确更新属性 prop1 和 prop2 的方法。没有捷径。

CALL apoc.load.json("properties.json") YIELD value as props
WITH props
MERGE (client:Client {name: 'Alice'})-[r:KNOWS]->(client:Client {name: 'John'})
ON CREATE
SET r.prop1 = props.prop1, r.prop2 = props.prop2

您可以做的是创建新的密码语句(例如使用 python 或 java 代码)以“动态”更新这些属性。