如何在索引字段上加快mongo更新?

时间:2018-08-29 15:58:10

标签: mongodb pymongo

我有一个大约有7500万条记录的数据库,我的代码遍历所有记录并更新了各种信息。更新信息后,我将flag字段设置为true。在脚本末尾,我想将它们全部更新为false,以便为下一个更新循环做好准备。我在python中执行此操作的代码是:

db.collection.update({'flag':True}, {'$set':{'flag':False}},multi=True)

此方法有效,但速度很慢-每秒大约需要1000-1500次更新,因此更新所有内容要花费数小时。我在flag字段上有一个索引:

{
            "v" : 2,
            "key" : {
                    "flag" : 1
            },
            "name" : "flag_1",
            "ns" : "collection.collection"
}

并确认查询正在使用它:

"planSummary" : "IXSCAN { flag: 1 }",

可以采取什么措施来加快速度?写入原始数据的时间不应超过几分钟。

标志索引的索引大小约为300MB。我不知道这是否全部在RAM中,但是否有足够的空间容纳它。

0 个答案:

没有答案