2016-07-01 9 views
0

neo4j cypherで複数のノードを更新するにはどうすればよいですか?Neo4jデータの一括更新

今、私はこのようにやろうとしている:

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に存在しない場合は、誰もが更新されないことを問題を持っています。 その他の問題はパフォーマンスです。そのようなクエリは遅いです。

一括更新を行う方法はありますか?

答えて

1

このように、あなたはマップ/辞書の配列にuserId Sのペアと新しいbalance値を持っていると仮定すると:

[ 
    { 
     "userId": 151325288158, 
     "balance": 146701.09 
    }, 
    { 
     "userId": 887436512344, 
     "balance": 22453.34 
    }, 
    { 
     "userId": 873927654232, 
     "balance": 300002.22 
    } 
] 

あなたはuserIdMATCHにサイファークエリにパラメータとしてこの配列を渡すことができますbalanceプロパティを次のように更新します。

WITH {data} AS pairs 
UNWIND pairs AS p 
MATCH (u:User) WHERE u.userId = p.userId 
SET u.balance = p.balance 
関連する問題