2017-02-02 7 views
0

mongoの "title"コレクション内のすべてのレコードを更新して、LastReturnedNameという名前のフィールドをすべての単一レコードのNameに設定するにはどうすればよいですか? Mongoのすべてのレコードを更新する

が、それはこのようなものだろうと思った:

db.title.update( 
    { "LastNameReturned" : "" }, 
    { $set:{ "LastNameReturned" : Name } }, 
    { multi : true } 
); 

答えて

1

あなたはforeachの反復使用することができます。

db.title.find({ "LastNameReturned" : "" }).snapshot() 
    .forEach(function(t) { 
     db.title.update({_id: t._id}, {$set: {"LastNameReturned" : t.Name}}); 
    }); 

注:あなたが唯一のunshardedコレクションでスナップショットを()を使用することができます。また、一括操作を使用する場合は、更新を高速化することができます。

+0

こんにちは - ありがとうございます。スクリプトは正常に実行されたと言います。表示する結果はありません。タイトルのLastReturnedNameがまだnullであるようです。これはコレクション内のすべてのレコードで動作するはずですか?または、渡されたIDと一致するはずのt._idですか? ...また、何が違反ですか? –

+0

@MitchellMcLaughlin t._id forEach関数で更新しているドキュメントの_idと一致するはずです。名前フィールドが存在し、null以外の値を持っていることを確認してください。 –

+0

Ok - ありがとうございます。多分あなたに試してみたいことはありますか?これは、タイトルのいずれかを更新するように見えませんでした! –

関連する問題