Отсутствует одна массовая операция в MongoDB

#mongodb #mongoose #bulkupdate

Вопрос:

Я пытаюсь выполнить массовую операцию с MongoDB на NodeJS, но каким-то образом в моем коде не хватает последней партии. Ошибок не обнаружено, и я могу просматривать свои данные с помощью компаса MongoDB, чтобы подтвердить, что очень немногие элементы, которые не обрабатываются, являются последними. Мне было интересно, является ли это асинхронной проблемой, но я включил .then() функцию «дождаться ее решения».

Вот мой код:

 const MySchema = mongoose.model('MySchema'); let bulkOps = []; let batch = 1000;   MySchema.collection.aggregate([  // some operations ]) .forEach(function(doc) {  bulkOps.push(  { "updateOne":  {  "filter": { "_id" : doc._id },  "update": {   // queries   }  }  );   if (bulkOps.length === batch) {  MySchema.collection.bulkWrite(bulkOps)  .then(bulkOps = []);  }  });  if (bulkOps.length gt; 0) {  MySchema.collection.bulkWrite(bulkOps); };  

Есть ли способ, которым последнее обещание каким-то образом не выполняется, или я упускаю из виду что-то простое?

Комментарии:

1. Неважно, оказалось, что у меня была операция с функцией deleteMany (), которая требовала, чтобы она была с «ожиданием». В конце концов это привело к тому, что в подсчете немного не хватило.