首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j批量数据更新

Neo4j批量数据更新
EN

Stack Overflow用户
提问于 2016-07-01 15:25:28
回答 2查看 2.3K关注 0票数 3

如何在neo4j密码中进行多个节点更新?

现在我试着这样做:

代码语言:javascript
复制
MATCH (user151325288158:User{userId:151325288158}),
      (user88245:User{userId:88245}) 
SET user151325288158.balance=2902833.4219789803 
SET user88245.balance=146701.0299999991 
RETURN user151325288158.balance,user88245.balance;

但是在这里我有一个问题,如果DB中没有这样的用户,那么没有人会被更新。另一个问题是性能,这样的查询速度很慢。

有什么方法可以进行这样的大容量更新吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-01 16:21:44

假设在一个映射/dicts数组中有一对userId和新的balance值,如下所示:

代码语言:javascript
复制
[
    {
      "userId": 151325288158,
      "balance": 146701.09
    },
    {
      "userId": 887436512344,
      "balance": 22453.34
    },
    {
      "userId": 873927654232,
      "balance": 300002.22
    }
]

可以将此数组作为参数传递给userId上的userId上的balance查询,并按如下方式更新balance属性:

代码语言:javascript
复制
WITH {data} AS pairs
UNWIND pairs AS p
MATCH (u:User) WHERE u.userId = p.userId
SET u.balance = p.balance 
票数 5
EN

Stack Overflow用户

发布于 2020-01-12 00:43:16

通过遵循William Lyonanswer,我能够实现多属性的批处理更新如下:

代码语言:javascript
复制
            UNWIND [{id: 123456, name: "John", age: 27}, {id: 789012, name: "Jane", age: 24}] AS updateUser
            MATCH (user: User)
            WHERE user.id = updateUser.id
            SET user += updateUser
            RETURN user
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38149000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档