2011-07-09 15 views
0
{ 
    _id: 'abc123', 
    reports: [ 
      { uid: 33, name: 'john' }, 
      { uid: 215, name: 'jess' }, 
      { uid: 29, name: 'hal'} 
      ] 
} 

私は上記の文書を持っているとしましょう。Mongoose(node.js MongoDB)では、どのようにこのアップデートを実行しますか?

models.Stuff.findOne({_id:'abc123'},function(err,result){ 
    //Got the above record. 
}); 

ドキュメントを取得したら、どのようにすべての「uids」を0に変更するのですか?私は、ドキュメントのレポートのすべてを通過し、あなたが要件のこの種のために非常に便利ですpinch.min.jsを使用0

答えて

1
for(i in result.reports){ 
    result.reports[i].uid = 0; 
} 
result.save(); 
+0

'$ set'を使って' update() 'を使ってこれを行う方法があるかもしれませんが、埋め込まれたドキュメントではどうすればそれがうまくいくかはわかりません。 – kcbanner

+0

'reports'は"オブジェクトの配列 "なので、' $ set'表記は信頼できません(特定の配列インデックスを更新する必要があります)。もちろん、上記の例では、あなたが誰かの変化を打ち砕くかもしれないことを認識しなければなりません。 (あなたが 'uid'を変更している間、多分彼らは' $ push'を行ったでしょう)あなたのユースケースによっては、ここでデータ競合のためのスペースがあります。 –

0

ベターにすべてのUIDを変更したいです。

関連する問題