2016-07-15 117 views
0

當我使用_id更新子文檔時,_id部分隨後被編寫,因此我沒有任何用於下次更新的獨特元素。任何人都可以在這個問題上幫助我嗎?我使用Mongoose.js_id在更新貓鼬時被刪除

這是查詢

 return Organization.update({ 
      'orgId': values.orgId, 
      "companyStatus._id": values.companyStatusId 
     }, { 
      $set: { 
       "companyStatus.$": values.companyStatus 
      } 
     }) 

這裏是更新前的數據更新後

companyStatus: [{ 
      "name" : "Manger", 
      "_id" : ObjectId("5788b9dec116c39753f77cfb") 
     }, 
     { 
      "name" : "Open", 
      "_id" : ObjectId("5788b9dec116c39753f77cfe") 
     }] 

companyStatus: [{ 
      "name" : "Manger" 
     }, 
     { 
      "name" : "Open", 
      "_id" : ObjectId("5788b9dec116c39753f77cfe") 
     }] 

所以我不具備的獨特ID更新下一次該記錄

數據我去叫更新

{ 
    "orgId": 1, 
    "companyStatus": { 
     "name": "TEST SUCCESS" 
    } 
} 

回答

0

你可以分享的find()方法。極限(2)該集合的結果呢?你提供的東西有點混亂。

首先,你需要了解陣列更新$運營商的行爲:

https://docs.mongodb.com/manual/reference/operator/update/positional/#up.S

你更新命令替換的「companyStatus」陣列整個文檔。就像刪除所有按鍵並設置新聞一樣。

如果你真的想這個數組中進行更新,你可以做這樣的事情:

return Organization.update({ 
     'orgId': values.orgId, 
     "companyStatus._id": values.companyStatusId 
    }, { 
     $set: { 
      "companyStatus.$.name": values.companyStatus.name 
     } 
    }) 

或者你可以在companyStatus鍵遍歷(如果你想更新另一個字段),並創建一個「套」目的。

+0

這是唯一的方法嗎?如果我在模型中有20個屬性?我必須寫每個屬性嗎? –

+0

「companyStatus」:{ 「名」:「試驗的成功」 } 盧卡斯這是找到 –

+1

的結果,我不明白。你說:「companyStatus」是一個數組,但那麼你find命令返回一個東西? ,爲什麼你要更新一個數組中的對象,我不undertand ..,當你可以將其保存爲單獨的對象? –