2016-03-29 37 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