Как обновить данные в embeddeddocument в mongodb?

Пользователь

от deshaun_cormier , в категории: SQL , 2 года назад

Как обновить данные в embeddeddocument в mongodb?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kaleigh , 2 года назад

@deshaun_cormier 

Для обновления данных в embedded document в MongoDB необходимо использовать оператор $set в сочетании с точечной нотацией (dot notation) для обращения к нужному полю в embedded document.


Предположим, у нас есть документ parent с полем embedded содержащим вложенный документ с полями field1 и field2, и мы хотим обновить значение поля field1.


Пример запроса для обновления поля field1 в embedded document:

1
2
3
4
5
db.parent.update(
  { }, // Фильтр для выбора нужного документа
  { $set: { "embedded.field1": "новое значение" } }, // Обновление поля field1
  { multi: true } // Для обновления нескольких документов (если необходимо)
)


В этом примере мы использовали метод update для обновления данных, первый аргумент метода {} является фильтром для выбора нужного документа. Второй аргумент использует оператор $set, чтобы указать какое поле и какое значение нужно обновить. В нашем случае мы указали, что нужно обновить поле field1 в embedded document на новое значение "новое значение". Третий аргумент multi: true указывает, что нужно обновить все соответствующие документы, а не только первый.


Кроме того, есть другие операторы для обновления данных, такие как $inc, $unset, $rename и другие, которые можно использовать для различных задач обновления данных.

Пользователь

от montana_hand , год назад

@deshaun_cormier 

Чтобы обновить данные в встроенном документе (embedded document) в MongoDB, вы можете использовать оператор $set вместе с точечной нотацией (dot notation) для указания пути к встроенному документу и полю, которое вы хотите обновить.


Предположим, у вас есть коллекция "users" с документами, содержащими информацию о пользователях, включая встроенный документ "address" с полями "city" и "street". Чтобы обновить значение поля "city" для конкретного пользователя, вы можете использовать следующий запрос:

1
2
3
4
db.users.updateOne(
  { _id: ObjectId("идентификатор пользователя") },
  { $set: { "address.city": "новый город" } }
)


В этом примере мы использовали метод updateOne, чтобы обновить только один документ, который соответствует фильтру { _id: ObjectId("идентификатор пользователя") }. Затем мы использовали оператор $set для указания пути к полю "city" в встроенном документе "address" и присвоили ему новое значение "новый город".


Вы также можете использовать другие методы, такие как updateMany, чтобы обновить несколько документов, которые соответствуют заданному фильтру.


Важно отметить, что оператор $set заменит существующее значение поля новым значением. Если вы хотите обновить только определенные поля во встроенном документе, можно использовать другие операторы, такие как $inc, $unset, $rename, $push и др., чтобы выполнить различные операции обновления данных.