2013-04-01 48 views
1

多個更新的問題我有蒙戈的結構是這樣的:使用MongoDB中

{ 
     "_id" : ObjectId("51596b7e469b9c3816000001"), 
     "company" : { 
       "_id" : "ade2fd0ec9b8b5e9152e0155", 
       "title" : "LO3426546457" 
     }, 
} 
{ 
     "_id" : ObjectId("51596cef469b9c3816000008"), 
     "company" : { 
       "_id" : "ade2fd0ec9b8b5e9152e0155", 
       "title" : "LO3426546457" 
     }, 
} 
{ 
     "_id" : ObjectId("51596cc3469b9c3816000007"), 
     "company" : { 
       "_id" : "ade2fd0ec9b8b5e9152e0155", 
       "title" : "LO3426546457" 
     }   
} 

而且我想改變這一切「標題」字段與特定的「_id」的對象。 我這樣做:

Collections.UsersCollection.update({ 
    'company._id': 'ade2fd0ec9b8b5e9152e0155' 
}, { 
    $set: { 
     'company': { _id: 'ade2fd0ec9b8b5e9152e0155', title: 'blablabla' } 
     // I also tried: 'company.title': 'blablabla' 
    } 
}, false, true); 

與執行的Node.js代碼後(我用的節點MongoDB的原生),蒙戈更新只有一個文件。

但是,如果我在Mongo Shell(mongo.exe)執行該命令,一切正常並更新所有文檔。

有什麼問題?

+0

你說這個命令在mongo shell中工作,但是它不起作用? – user20140268

+0

哦,對不起。它在我的Node.js代碼中不起作用。我使用這個模塊:https://github.com/mongodb/node-mongodb-native – msmirnov

回答

3

默認情況下mongo只更新單個文檔。 http://docs.mongodb.org/manual/reference/method/db.collection.update/

使用多選項進行多文檔更新。

+0

是的,我的代碼中的'true'選項等於:{multi:true} – msmirnov

+0

作爲可選參數,我認爲你的真實可能會被解釋對於upsert來說是正確的。如果你還沒有嘗試過,我會嘗試使用顯式{multi:true}。 – Biswanath

+0

我嘗試了這段代碼,但沒有任何改變。 'Collections.UsersCollection.update({ 'company._id':ID },{$ 設置:{ 'company.title':標題 } },{UPSERT:假},{多:真} );' – msmirnov

0

默認情況下,collection.update()只更新單個文檔,如果需要更新多個文檔,則必須在回調函數之前添加{multi:1}參數。