在batch-node.js中唯一更新数百万文档mongodb

在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

我收集了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
现在,根据他们对对象的选择,我需要运行一个函数,使用这样的外部数据计算分数

{
  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分钟来处理

如何计算分数?基于什么?