我使用流来获取mongoDB收集机中的所有数据:
module.exports.machineStream = () => models.machines.find().lean().cursor();
然后我处理这些数据并写入另一个集合:
let writeCount = 0;
async function updateHistory(doc) {
...
writeCount++;
console.log(`writeCount: ${writeCount}`);
await mongo.updateTrackerRecord();
}
async function processStream() {
let readCount = 0;
console.log(`${(new Date().toLocaleString('en-US', { timeZone: 'America/Toronto' })).toString()}: price-tracker: start updating price tracker`);
const stream = mongo.machineStream();
stream.on('data', async (doc) => {
readCount++;
console.log(`readCount: ${readCount}`);
stream.pause();
await updateHistory(doc);
stream.resume();
}).on('error', (err) => {
console.log(err);
sentry.captureException(err);
}).on('close', () => {
console.log(`${(new Date().toLocaleString('en-US', { timeZone: 'America/Toronto' })).toString()}: price-tracker: 1 end updating price tracker`);
});
}
以下输出显示在完成读取流之前已接收到流关闭消息(数据总数为4746):
readCount: 4726
writeCount: 4726
readCount: 4727
writeCount: 4727
readCount: 4728
writeCount: 4728
readCount: 4729
writeCount: 4729
readCount: 4730
writeCount: 4730
readCount: 4731
6/22/2020, 4:42:59 PM: price-tracker: 1 end updating price tracker
writeCount: 4731
readCount: 4732
writeCount: 4732
readCount: 4733
writeCount: 4733
readCount: 4734
writeCount: 4734
readCount: 4735
writeCount: 4735
readCount: 4736
writeCount: 4736
readCount: 4737
writeCount: 4737
readCount: 4738
writeCount: 4738
readCount: 4739
writeCount: 4739
readCount: 4740
writeCount: 4740
readCount: 4741
writeCount: 4741
readCount: 4742
writeCount: 4742
readCount: 4743
writeCount: 4743
readCount: 4744
writeCount: 4744
readCount: 4745
writeCount: 4745
readCount: 4746
writeCount: 4746
我的问题是: