使用MongoDB对许多独特文档进行高效批量更新

时间:2018-02-13 21:49:27

标签: mongodb

假设我有很多(> 20k)文档,如下所示

{
  "id": 1,
  "data": "1"
}

{
  "id": 2,
  "data": "2"
}

...

我希望将它们更新为

{
  "id": 1,
  "data": "3"
}

{
  "id": 2,
  "data": "4"
}

...

由于文件数量庞大,在合理的时间内进行逐个更新根本不可行。因此,我觉得必须能够立即批量更新所有文档,但我不确定如何正确地执行此操作。试图搜索谷歌没有找到任何有用的答案。

编辑:我知道updateMany()存在,我的问题是我不知道如何编写适当的过滤器。例如:

{
  "id": 1,
  "data": "1"
}

{
  "id": 2,
  "data": "2"
}

我只希望文档标识1data设置为"3",并且只需将文档标识2设置为data设置为"4" }。从阅读updateMany()文档,我不知道如何做到这一点。

编辑2:

问题中的对象是Discord guild entities。剥离一些额外数据后,插入的内容看起来像

{
  "_id" : ObjectId("5a80a877a2b51be70f2c3e72"), 
  "id" : NumberLong("123123123123123123"), 
  "afk_channel_id" : null, 
  "afk_timeout" : 300, 
  "application_id" : null, 
  "default_message_notifications" : 0, 
  "explicit_content_filter" : 0, 
  "features" : [ ], 
  "icon" : null, 
  "joined_at" : "<timestamp>", 
  "large" : false, 
  "member_count" : 2, 
  "mfa_level" : 0, 
  "name" : "Test", 
  "owner_id" : NumberLong("123123123123123123"), 
  "region" : "us-east", 
  "splash" : null, 
  "system_channel_id" : NumberLong("123123123123123123"), 
  "unavailable" : false, 
  "verification_level" : 0
}

因此,我能够在唯一上查询的最多是id字段。

0 个答案:

没有答案