В MongoDB как вы используете $ set для обновления вложенного значения / встроенного документа?

В MongoDB, как вы используете$set обновить вложенное значение?

Например, рассмотрим коллекциюлюди со следующим документом:

{
  _id: ObjectId("5a7e395e20a31e44e0e7e284"),
  name: "foo",
  address: { street: "123", town: "bar" }
}

Как мне обновитьstreet поле, встроенное вaddress документ от"123" в"Main Street"?

Ответы на вопрос(2)

В дополнение к ответу Нильса, также проверьте «тип» вложенного значения. В моем случае это была «строка», сформированная из json. Хотя это может быть маловероятным, но убедитесь, что значение имеет правильный тип.

Решение Вопроса

С использованиемточечная запись:

db.people.update({ }, { $set: { "address.street": "Main Street" } })
 prit kalra27 сент. 2018 г., 14:45
Как установить то же поле, если его адрес является массивом. Например: {_id: ObjectId ("5a7e395e20a31e44e0e7e284"), имя: "foo", адрес: [{street: "123", town: "bar"}]}
 tleef15 мая 2014 г., 05:25
Это работает, даже если адрес не существует? Я знаю, что $ set создаст улицу, если она не существует по адресу, но каково поведение, если наследственные свойства не существуют? Кроме того, ваша ссылка требует входа в систему.
 Niels van der Rest15 мая 2014 г., 20:23
@ Том, спасибо за хедз-ап о ссылке, я исправил это. Чтобы ответить на ваш вопрос: он создаст исконные свойства для вас, если они не существуют.
 Nepoxx21 мар. 2017 г., 21:39
@ Том Да, будет. Это создаст весь объект вплоть до поля, которое вы устанавливаете. (Поздний ответ, но, надеюсь, это полезно для других, спотыкающихся в этом вопросе)

Ваш ответ на вопрос