Обновить записи с другими значениями в MongoDB - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь сохранить много запросов, я использую Mongoose в качестве ODM.

У меня довольно большой массив topic_codes, скажем, 50k + элементов, я делаю это (CoffeeScript):

  conditions = code: $in: topic_codes
  update     = $push: samples: date: point_in_time, volume: ??
  options    = multi: true
  TopicArchive.update conditions, update, options, (err) ->

Здесь я пытаюсь вставить новый поддокумент в ' samples ', который является массивом моего документа с объектом с двумя атрибутами, дата и том .

Хотя дата одинакова для каждой записи, которую я хочу обновить, том это не так и может варьироваться от записи к записи.

Есть ли способ достичь моей цели без необходимости проходить через огромный удар по базе данных?

1 Ответ

1 голос
/ 08 ноября 2011

Множественное обновление обновляет все соответствующие документы в соответствии со спецификатором обновления. Если вы хотите обновить каждый документ другим значением, то вы должны выпустить N обновлений для N документов (или, точнее, N обновлений для каждого из N описателей обновлений, которые вы будете использовать). Например, если у вас на volume меньше, чем topic_codes, вы можете выполнить серию многократных обновлений, где каждое обновление касается только тех документов, которые должны иметь тот же volume, используя $in, как вы уже есть.

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