2016-05-20 12 views
1

私はMongoDBに大きなコレクションを持っています:サイズ - 94.605.081.327 Bカウント - 54.738.234です。このコレクションのすべてのドキュメントを変更する必要があります。これは単一のupdateで行うことはできません。MongoDB、Mongoose、Node.jsアップデートストリーム

データをストリーミングしてコレクションを1つずつ更新したいとします。同じプロジェクトの別の開発者が、次のようなアプローチを推奨しました:

stream.on('data', (data)=>{ 
    stream.pause(); 
    data.field = 'newValue'; // update 
    data.save((err)=>{ 
     stream.resume(); 
    }) 
}) 

いいですか?これを行うより効率的な方法がありますか Node.jsMongooseですか?

+0

:あなたはmongooseが関与する必要がある場合は、あなたのコードは次のようになります。 MongoDBは 'skip'と' limit'を提供し、結果セットのセクションだけをロードします。 – idleherb

答えて

0

bulk operationを使用できます。詳細についてはMongoDB documentationをご覧ください。あなたは、バッチでデータを読み取るバッチ内のすべてのエントリを更新し、バックバッチを書くことができ

var bulk = Items.collection.initializeOrderedBulkOp(); 
bulk.find(query).update(update); 
bulk.execute(function(error) { 
    callback();     
}); 
関連する問題