Обновление нескольких документов на основе условия - PullRequest
1 голос
/ 14 января 2020

My Express API имеет две основные сущности:

  • Пользователи
  • Клиенты

Каждый user имеет список clientIds им разрешено видеть.

Когда в систему добавляется новый client, этот clientId необходимо добавить ко всем users, которым разрешено видеть вновь добавленных клиентов.

Как мне выполнить запрос на обновление в понедельник goose, учитывая, что мне нужно добавить новый clientId в существующий список clientIds для каждого user, у которого есть canSeeNewClients == true?

User.updateMany(
    // Find all users who can see new clients
    {"canSeeNewClients": true},
    // Add the new clientId to the user's list of clientIds 
    {"$set":{"listOfClientIds": ??? }}
);

1 Ответ

2 голосов
/ 14 января 2020

Если предположить, что ваша User модель выглядит примерно так:

{
    "_id": "123",
    "canSeeNewClients": true,
    "clientIds": [
        "2",
        "3"
    ]
}

, тогда вы можете добавить clientId с обновлением и $push, вы можете заменить $push на $addToSet чтобы быть уверенным, что clientId не будет добавлен дважды:

await Users.updateMany(
    { canSeeNewClients: true },
    { $push: { clientIds: clientId } }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...