Запрос на обновление MongoDB - документ с вложенным запросом - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу обновить значения в документах, которые соответствуют некоторым критериям. В моем случае массив «Orders» содержит несколько объектов, каждый объект содержит определенный объект «PendingDetails», прямо здесь есть строковое поле «State», которое я хотел бы изменить.

Критерии: имя пользователя: "Pablo.Lobo@gmail.com"; PendingDetails.State: "не нуль", "существует"

Структура документа

db.getCollection('users').updateMany(
   {
     "Username" : "Pablo.Lobo@gmail.com",
     "Orders": { $elemMatch: { "PendingDetails.State": { $exists: true, $ne: null } } } 
   },
   { $set: { "Orders.$.PendingDetails.State" : "123" } }
) 

Ожидаемый результат состоит в том, что каждый объект в Order в разделе PendingDetails.State будет иметь "123", по крайней мере, если бы он существовал и не был нулевым

Проблема в том, что значения не меняются

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте сделать

db.getCollection('users').updateMany(
   {
     "Username" : "Pablo.Lobo@gmail.com",
     "Orders": { $elemMatch: { "PendingDetails.State": { $exists: true, $ne: null } } } 
   },
   { $set: { "Orders.$.PendingDetails.$.State" : "123" } }
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...