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

Не могли бы вы уточнить, о чем вы спрашиваете? Что именно вы подразумеваете под «Я хочу обновить поле1 без чтения поля2»? –

+0

'{ \t "_id": ObjectId ("56fa03 ....."), \t "категории": { \t \t "category_name": { \t \t \t "ан": "Название категории", \t \t \t "дк": "Название категории ДК" \t \t}, \t \t "цвет": { \t \t \t "ан": "Цвет", \t \t"дк": "Color DK" \t \t} \t} \t} ' Здесь я хочу обновить' category_name' без чтения 'color' .. –

ответ

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

на основе документации (v 3.2): метод либо

Обновление() изменяет определенные поля в существующих документов или заменяет существующий документ целиком.

Для обновления встроенного документа или массива в целом укажите значение замены для поля . Для обновления конкретных полей в качестве вложенного документа или в массиве, используйте точечную нотацию, чтобы указать поле

.

+0

Хотя этот код может ответить на вопрос, обеспечивая дополнительный контекст относительно _why_ и/или _how_ этот код отвечает на вопрос, значительно улучшив его долгосрочную стоимость . Пожалуйста, отредактируйте свой ответ, чтобы добавить описание . –

+0

сделано. @TobySpeight – Soren

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