Многократные заказанные массовые операции в mongodb - PullRequest
0 голосов
/ 09 января 2020

Я ищу способ сделать несколько упорядоченных массивов в порядке их выполнения. Я не знаю, есть ли другой способ вместо массового использования, но моя цель состоит в том, чтобы сделать некоторые операции записи по порядку, и я не могу найти какие-либо документы по этому поводу.

Основная проблема заключается в том, что я не могу создать один заказанный объем для всех них, так как Я получаю один запрос на запись за раз .

На самом деле я создаю writeQueue где я отправляю sh новые запросы на запись и обрабатываю их один за другим:

var bulkQueue = []
var executing = false

function insertPacket(packet, cb) {
  var criteria = { topic: packet.topic }
  var bulk = this._cl.retained.initializeOrderedBulkOp()

  if (packet.payload.length > 0) {
    bulk.find(criteria).upsert().updateOne(decoratePacket(packet, this._opts))
  } else {
    bulk.find(criteria).deleteOne()
  }

  enqueueBulk(bulk, cb)
}

function enqueueBulk (bulk, cb) {
  bulkQueue.unshift({ bulk, cb })
  if (!executing) {
    executing = true
    doNext()
  }
}

function doNext () {
  if (bulkQueue.length > 0) {
    var op = bulkQueue.pop()
    op.bulk.execute(function () {
      op.cb()
      doNext()
    })
  } else executing = false
}

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