2013-12-13 27 views
0

下以$ pushAll和簡單的賦值更新失敗:MongoDB的 - 我不能在同一時間

db.test.update({_id:102},{$pushAll:{our_days:["sat","thurs","frid"]}, country:"XYZ"}, {upsert:true}) 

錯誤消息:"Invalid modifier specified: country"

正確的方法似乎是:

db.test.update({_id:102},{$pushAll:{our_days:["sat","thurs","frid"]}, $set:{country:"XYZ"}}, {upsert:true}) 

那麼,在同樣的更新文檔中,我無法將諸如「$ pushAll」之類的修飾符與簡單賦值(如field:value)混合使用?相反,我必須使用$ set修飾符進行簡單賦值?

描述此行爲的文檔中是否有任何內容?

回答

0

發生這種情況是因爲db.test.update({_id : 1}, {country : 1})只會將整個文檔更改爲country = 1並因此刪除其他所有內容。

所以很可能mongo正在聰明地告訴你:你想要更新特定元素,同時刪除所有元素(以及該元素),以便將其替換爲country = 1。很可能這不是你想要的。所以我寧願提出一個錯誤。

關於文檔 - 我認爲最好的方法是重讀mongodb update