[英]MongoDB/Mongoose: updating two different fields in Mongoose model
是否有可能做這樣的事情:
var updateData = {
"$set": {
content: 'foo'
},
"$push":{
versions: {
some: 'bar'
}
}
};
Model.update({},updateData, {});
還是我們需要做兩個或更多單獨的更新?
當然只有一次更新和Mongoose本身無關,只是直接通過操作。 一般來說,閱讀$set
的文檔應該會對此有更多的了解。
你的語法有點不對,應該是:
Model.update({},updateData,function(err,numAffected) {
});
當然,如果您想影響多個文檔而不僅僅是第一個匹配項(這里是默認值),那么傳入“multi”:
Model.update({},updateData,{ "multi": true },function(err,numAffected) {
});
.find()
和.save()
的建議清楚地表明不是這里發生的事情,並且是完全錯誤的方法。 該操作序列意味着接觸數據庫的“兩個”操作,最重要的是,數據可能會在.find()
操作之間發生更改,而在.save()
提交的更改可能會覆蓋此數據。
像$set
與.update()
和相關方法這樣的操作符是原子處理的。 僅與數據庫進行一次接觸,此類操作員的目的是“就地”更改數據,而無需將其返回給客戶端進行修改。
評論中的一個真實陳述是簡單地關閉調試:
mongooose.set("debug",true)
然后您將看到通過驅動程序傳遞到 MongoDB 的實際語句。
這只是一個操作,根據提供的參數,當然可以影響多個字段甚至多個文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.