#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 (), которая требовала, чтобы она была с «ожиданием». В конце концов это привело к тому, что в подсчете немного не хватило.