簡體   English   中英

MongoDB/Mongoose:更新 Mongoose 模型中的兩個不同字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM