Обновить все элементы в массиве вложенного документа mon goose - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь обновить множество вложенных документов одного документа. Поэтому, если это схема:

user: {
    addresses: [
        {
            location: String
            isActive: Boolean
            _id: false
        }
    ]
}

Я хочу обновить все поля isActive в поддокументе addresses. Поэтому я попробовал это:

await User.findOneAndUpdate({
    _id: userId,
    'user.addresses': { $exists: true, $not: { $size: 0 } }
}, { 'user.addresses.isActive': true }
);

Но я получаю ошибку. Как я могу обновить все элементы в массиве, используя mon goose?

1 Ответ

1 голос
/ 28 февраля 2020

Вы можете использовать оператор $ [] для этого. Пример:

await User.findOneAndUpdate(
  {
    _id: userId,
    'user.addresses': { $exists: true, $not: { $size: 0 } }
  }, 
  { 'user.addresses.$[].isActive': true }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...