MongoDB выход агрегации записи в коллекцию без удаления предыдущих данных

Обновить

November 2018

Просмотры

86 раз

2

У меня есть userколлекция и jobколлекция. всякий раз , когда новая работа вставляется, я бег совокупного запроса трубопровода , который выводит список документов , которые необходимы для моей будущей работы.

с $outоператором я могу написать , скажем , matchколлекцию. Теперь , когда новая работа вставляются и запрос выполняется снова, новые выходы стирают все предыдущие данные matchколлекции. которые я не хочу , но работать в соответствии с документально в MongoDB.

Для того, чтобы мои данные настойчивых, я могу позвонить toArray()в моем приложении , а затем записать в новую коллекцию. Но это не будет масштабироваться на 10000 до 1M документов, насколько я понимаю. Мой вопрос, могу ли я (возможно?) Решить эту конкретную проблему , не подвергая большую нагрузку на память? Все , как bulkInsert с курсором? немного отсрочено вычисление не будет больно много , хотя

Вот структура моего трубопровода.

// ... previous stages
const stage7 = {
  $out: 'match'
}
....
collection.aggregate(
  [stage1, stage2, stage3, stage4, stage5, stage6, stage7],
  (err, result) => {
    if (err) {
      console.log('agg failed error ', err)
      throw new Error('aggregation failed to write in match db', err)
    }
    console.log('write to db aggregation done', result)
  }
)

0 ответы