问题描述
node.js 中的应用程序有一个 后台作业,它每隔几天运行一次,并且:
从第三方接收数十万个输入对象。
对于每个输入对象:
如果mongodb中存在对应的文档,而文档中不存在字段X,则在该文档中添加字段X。
注意事项:
-
通过_id从mongodb查询文档。
-
使用 mongodb WiredTiger。
-
假设 mongodb 中的文档数约为 100 万。
-
mongodb 中将存在大量输入对象对应的文档。
-
我们预计,当此流程运行时,在某些情况下,高百分比的文档将满足更新条件,而在某些情况下,高百分比的文档将不满足更新条件。
假设主要目的是:
-
准确更新
-
Mongodb 性能
运行此流程的最佳方法是什么 - 在 mongodb 中处理批量文档或在 mongodb 中分别处理每个输入对象?
如果答案是在 mongodb 中处理批处理,例如:
db.mycoll.update(
{
"_id" : {$in:["id1","id2","id3"...]},"X": {$exists: false}
},{
$set : {"X":1}
}
);
-
哪个批量大小是最佳的?
-
如果高比例的文档不满足更新条件,我们进行更新查询(而不是从mongodb获取并在应用程序中决定不需要更新)会影响mongodb的性能吗?在这种情况下,锁将如何工作?未更新的文档会被锁定吗?
如果答案是在 mongodb 中分别处理每个输入对象:
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)