mongo updateMany с дополнительной логикой

  1. Есть массив с id документов коллекции которым надо сделать update: var id = [1, 2, 3];
  2. Есть одинаковые данные которые надо изменить в update var data = { status: 'done', active: 'false' };

Чтобы обновить все надо просто выполнить на nodejs один раз:

collection.updateMany({_id: { $in: id }}, {$set: data });

Но потребовалось обновить ещё одно поле в документах, значение для которого берется из логики на nodejs, например, так:

var id = [{ id: 1, orderId: 45 }, { id: 2, orderId: 100 }, { id: 3, orderId: 110 }];

Нужно обновить документы с id из массива данными соответственно orderId и переменной data.

Напрашивается такое решение:

id.forEach(el => {
   collection.updateOne({ _id: el.id }, { $set: {...data, ...{ orderId: el.orderId }}})})
});

Возможна ли реализация с обновлением одним запросом из nodejs, чтобы не делать 100 update в цикле, например, если в массиве id будет 100 элементов


Ответы (0 шт):