我有一个数组,其中每个对象,我需要找到,如果一些关键存在,那么它应该更新或插入。我已经这样做了,从循环,但问题是我有大约20 L的数据,需要通过这个每天早上使用cron调度运行。
我的问题是:我可以使用一些其他的方式,比如我把这个数组传递给一个方法,以获得更好的性能吗?
我的方法:
const arr = [{id: 1, pre: 10, post: 15 , name: 'egg'},{id: 2, pre: 10, post: 15 , name: 'egg 2'},{id: 3, pre: 10, post: 15 , name: 'egg 3'},{id: 4, pre: 10, post: 15 , name: 'egg 4'}]
for(x = 0; x < arr.length ; x++) {
await processed_.findByIdAndUpdate({id: arr[x].id}, { $set: arr[x] }, {upsert: true, new: true})
}
字符串
谢谢你的建议。
1条答案
按热度按时间nr7wwzry1#
您需要使用
bulkWrite
来提高代码的性能。bulkWrite
允许您在一个请求中发送多个更新或插入操作,从而减少发送到数据库的请求数量。示例代码如下(未经测试的代码,但您可以理解):字符串
注意(从你可能想看看的地方):
每个组中的操作数不能超过数据库的maxWriteBatchSize值。maxWriteBatchSize的默认值为100,000。此值显示在hello.maxWriteBatchSize字段中。