在batch-node.js中唯一更新数百万文档mongodb
我收集了10万到100万份文件。为了简单起见,让我们考虑每个文档都具有这些最小值,样本值在batch-node.js中唯一更新数百万文档mongodb,node.js,mongodb,express,aggregation-framework,background-process,Node.js,Mongodb,Express,Aggregation Framework,Background Process,我收集了10万到100万份文件。为了简单起见,让我们考虑每个文档都具有这些最小值,样本值 user_id: 'objectId_user_1', game_id: 'game_id_1', selection: [ {name: 'A', _id:'objectId_A'}, {name: 'B', _id:'objectId_B'} ] // array will have size 10 现在,根据他们对对象的选择,我需要运行一个函数,使用这样的外部数据计算分数 { objec
user_id: 'objectId_user_1',
game_id: 'game_id_1',
selection: [
{name: 'A', _id:'objectId_A'},
{name: 'B', _id:'objectId_B'}
] // array will have size 10
现在,根据他们对对象的选择,我需要运行一个函数,使用这样的外部数据计算分数
{
objectId_A: 123,
objectId_B: 50,
objectId_C: 77,
....
objectId_Z: 40
}
由于每个人都有一个不同的选择
数组,因此得分
也会不同。我需要将此分数值存储在相应的文档中
更新后,每个文档将如下所示:
user_id: 'objectId_user_1',
game_id: 'game_id_1',
selection: [
{name: 'A', _id:'objectId_A'},
{name: 'B', _id:'objectId_B'}
],
score: 385,
processed: true
我如何才能有效地做到这一点。是否可以通过聚合查询执行此操作
我可以考虑批量获取数据并进行处理,然后使用节点计划进行更新。但我希望有更好的解决办法
每个文档的大小约为1.8KB
我的mongo服务器相对较小(约2gb ram,100gb存储)
我不介意整个过程是否需要20-30分钟来处理如何计算分数?基于什么?