2016-12-13 17 views
2

私はMongooseを使用しており、いくつかの計算に基づいて多くの文書を更新する必要があります。Mongoose多くを見つけて更新してください

私は一つ一つを照会しています場合、これは簡単ですが、私は50個の項目を言っている場合、私は引き戻すするクエリをキュレーションされた私は何をやっている1

ずつを照会し、更新する必要はありません複数のドキュメントがあるので、それらをすべてループして変更できます。

ただし、findOneのように複数のオブジェクトに対してsaveを呼び出すことはできません。その私の最初のマングースとの時間が、Entity Frameworkの中で、私は、クエリから返された結果を編集することができますし、私はこの

item.find(query).exec(function(err, items) { 
    for (i in items) { 
    // change stuff 
    } 
    items.save(function (err) { 
    // saved 
    } 
} 

答えて

0
のような何かをしたい

を変更したすべての項目を更新するために()でsaveChangesを呼び出します

これらのドキュメントを簡単に変更しようとしている場合は、

update({_id:{$in:[a,b,c]}}, {$inc:{score:1}}, {multi:true}).exec()のいずれかが役に立ちます。

2

uは約束ライブラリを使用してrの場合のuは次のように行うことができます。

var Promise = require('bluebird'); 
var saveQuery=[]; 
item.find(query).exec(function(err, items) { 
    for (i in items) { 
    // change stuff 
    } 
saveQuery.push(item.save()); // Write your save query 
} 
    return Promise.all(saveQuery); // this will do your all save queries at once simultaneously.