Пн goose обновить поле, если другое поле массива имеет размер больше 5 - PullRequest
0 голосов
/ 05 мая 2020

Я новичок в Mon goose и не могу найти способ выполнить определенный запрос на обновление. У меня следующая схема:

{
  usersJoined: [{
    type: String
  }],
  status: {
    type: Number,
    default: 0
  },
}

Я хочу обновить статус до 1, когда размер массива usersJoined равен 5. Я использую следующий запрос для запроса правильного документа:

Model.findOneAndUpdate(
  {
    status: 0,
    usersJoined: {$ne: user}
  },
  {
    $push: {usersJoined: user}
  }
);

1 Ответ

0 голосов
/ 05 мая 2020

Я хочу обновить статус до 1, когда размер массива usersJoined равен 5

Используйте оператор array $ size для фильтрации записей, метод findOneAndUpdate будет обновить первую совпавшую запись. См. Документ findOneAndUpdate . Если это не подходит для вашего варианта использования, проверьте дополнительные методы обновления

db.collection.findOneAndUpdate(
    {"userJoined": {"$size": 5}},
    {$set: {"status": 1}},
    {returnNewDocument: true} //if true, returns the updated document.
);

Пример

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