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 代码)以“动态”更新这些属性。
我想从 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 代码)以“动态”更新这些属性。