2017-08-14 110 views
1

我正在閱讀來自Mongoose的特定模式的所有文檔。現在在我的程序中,我正在對從Mongoose得到的結果進行一些修改。事情是這樣的:如何保存/更新貓鼬中的多個文檔

var model = mongoose.model("Doc", docSchema); 
model.find(function(err, result){ 
    // for each result do some modifications 
}); 

如何,我可以把所有的結果返回到數據庫中保存的?目前我正在迭代文檔並在每個文檔上執行save()。我認爲一定有更好的辦法。但目前我只能找到有關在數據庫中更新文檔而不返回的信息。或者執行SAME更新到每個文檔的批量更新。

回答

0

你可以使用更新查詢multi:true更新數據庫中的所有文檔。 請看下面的參考代碼,

model.update({ "_id": id }, { $set: { "Key": "Value" } }, { multi: true }, function (err, records) { 
     if (err || !records) { 
     return res.json({ status: 500, message: "Unable to update documents." }); 
     } else { 
     return res.json({ status: 200, message: "success" }); 
     } 
    }); 
+0

Thnaks但是這不是我我正在尋找,請仔細閱讀這個問題。我有多個文件,我做了個別更改。 (即我正在改變每個文檔的不同屬性),我希望這些更改能夠反映在數據庫中。 – Chris

0

如果你正試圖使在結果中的每個文件相同的變化,你可以做這樣的事情:

model.update({ _id: { $in: results.map(doc=>doc._id) }}, { yourField: 'new value' }, { multi: true })