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



我想根据JSON键值动态创建/更新现有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代码(来更新那些属性";动态地";。

最新更新