2016-06-15 8 views
1

У меня есть документ mongodb, как показано ниже.MongoDB добавляет новое поле в дополнительный документ

{ 
    "_id" : ObjectId("57616e718ed5a017089143f2"), 
    "subitems" : { 
     "1" : "a", 
     "2" : "b" 
    } 
} 

Я пытался добавить новые поля в поле «subitems».

db.items.update({ "_id" : ObjectId("57616e718ed5a017089143f2") }, { $set: { subitems: { 3: "c" } } }) 

Вместо того, чтобы обновить поле, его перезаписью как

{ 
    "_id" : ObjectId("57616e718ed5a017089143f2"), 
    "subitems" : { 
     "3" : "c" 
    } 
} 

Как я достичь результата

{ 
    "_id" : ObjectId("57616e718ed5a017089143f2"), 
    "subitems" : { 
     "1" : "a", 
     "2" : "b", 
     "3" : "c" 
    } 
} 
+2

Просто любопытно, почему в строке есть целая цепочка? – styvane

+0

@ user3100115 его просто фиктивные данные, в исходном документе нет строки целых чисел в качестве имени полей – sravis

ответ

1

Используйте dot notation, чтобы добавить поле для внедренного документа:

db.items.update(
    { "_id" : ObjectId("57616e718ed5a017089143f2") }, 
    { "$set": { "subitems.3": "c" } } 
) 

Подробнее от documentation.

Смежные вопросы