如何在 neo4j cypher 中进行多个节点更新?
现在我正在尝试这样做:
MATCH (user151325288158:User{userId:151325288158}),
(user88245:User{userId:88245})
SET user151325288158.balance=2902833.4219789803
SET user88245.balance=146701.0299999991
RETURN user151325288158.balance,user88245.balance;
Run Code Online (Sandbox Code Playgroud)
但这里我有一个问题,如果数据库中不存在这样的用户,则没有人会被更新。另一个问题是性能,这样的查询很慢。
有某种方法可以进行此类批量更新吗?
假设您在映射/字典数组中有成对的userIds 和新值,如下所示:balance
[
{
"userId": 151325288158,
"balance": 146701.09
},
{
"userId": 887436512344,
"balance": 22453.34
},
{
"userId": 873927654232,
"balance": 300002.22
}
]
Run Code Online (Sandbox Code Playgroud)
您可以将此数组作为参数传递给 Cypher 查询MATCH并userId更新balance属性,如下所示:
WITH {data} AS pairs
UNWIND pairs AS p
MATCH (u:User) WHERE u.userId = p.userId
SET u.balance = p.balance
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |