2017-02-09 24 views
4

我試圖用Node.js的使用貓鼬到新的領域MongoDB中通過更新方法添加到現有的文檔

當磁場存在貓鼬更新MongoDB的文件,更新工作,但如果外地做不存在,更新將不起作用。

我想添加新的字段到文檔中。

MongoDB的查詢(https://docs.mongodb.com/v3.2/reference/operator/update/set/#behavior)工作:

db.getCollection('users').update({ 'uid': 'uid' }, { $set: { 'vehicle_status': 'bike' } }) 

但在貓鼬完成時將無法正常工作。使用$ set不會添加字段。

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true }) 
+0

我發現靈魂。 http://stackoverflow.com/questions/23959287/add-a-field-to-existing-mongodb-document-with-mongoose-in-node-js?rq=1 model not defined new filed。我在模型中添加新的字段。並添加提交的工作。 – sabper

+0

好的,有幫助的知道。請在這裏發表您的問題時儘量拼出最好的答案,因爲它們可能對很多人有用,並且有助於他們理解他們:) 讓模型中的字段當然是必要的 –

回答

4

試試下面的代碼:

User.update(
    {uid: 'uid'}, 
    {vehicle_status : 'vehicleSatus' }, 
    {multi:true}, 
     function(err, numberAffected){ 
     }); 

此外,請確保您添加vehicle_status到架構。

+0

有沒有辦法在不修改模式的情況下做到這一點? –

+0

Marwan Ossama,不需要它,因爲模式定義了文檔結構。我猜如果你沒有權限訪問這個模式,你可以使用一個現有的字段並在現有的字段中存儲一個字符串,但這不是一個很好的解決方案,但有時如果你在封閉的源系統或類似的東西。但是,在這種情況下,上面的代碼是無關緊要的。 –

相關問題