2016-03-29 38 views
0
label : { 
    field1 : { .....}, 
    field2 : {.....} 
} 
db.collection.update({_id:"objectId"},{$set : label}) 

我有多次的Fileds單託收,我想更新field1沒有removeing field2,這可能嗎?MongoDB的現場級更新

例如

{ 
    "_id" : ObjectId("56fa03....."), 
    "categories" : { 
     "category_name" : { 
      "en" : "Category Name", 
      "dk" : "Category Name DK" 
     }, 
     "color" : { "en" : "Color", "dk" : "Color DK" } 
    } 
} 

在這裏,我想更新category_name無removeing顏色。如何更新記錄中的單個字段1?

+2

你能澄清你在問什麼嗎? 「我想更新field1而不讀取field2」是什麼意思? –

+0

'{ \t 「_id」:物件( 「56fa03 .....」), \t 「類別」:{ \t \t 「CATEGORY_NAME」:{ \t \t \t 「恩」: 「類別名稱」, \t \t \t 「DK」: 「類別名稱DK」 \t \t}, \t \t 「顏色」:{ \t \t \t 「恩」: 「顏色」, \t \t \t 「DK」: 「顏色DK」 \t \t} \t} \t}' 在這裏,我想沒有閱讀'color' .. –

回答

0
db.getCollection('CollectionName') 
    .update("_id" : "objectId", 
     {$set : {"label.field1" : "value of field 1"}}) 

基於文檔(V 3.2):

更新()方法或者修改的特定字段在現有 文檔或完全替代現有的文檔。

要更新整個嵌入式文檔或陣列,請指定該字段的 替換值。要更新 嵌入文檔中或在陣列中的特定字段,使用點表示法指定 字段

+0

儘管此代碼可以回答這個問題,更新'category_name',提供 關於其他上下文_why_和/或_how_此代碼 回答此問題將顯着提高其 的長期價值。請[編輯]你的答案,添加一些 的解釋。 –

+0

完成。 @TobySpeight – Soren