【发布时间】:2019-07-02 15:37:12
【问题描述】:
我正在处理一些文本文件以搜索模式并对其进行计数。由于文件非常大,处理时间是一个重要问题。我有一个 python 代码可以更新计数器并将其存储在 mongodb 中。为了让它更快地工作,我试图减少数据库操作的数量。
原始版本每次出现都递增:
mlcol.find_one_and_update(
{"connip": conip},
{"$inc":{ts:1}},
upsert=True
)
由于这需要很长时间,我所做的就是将计数器保存在内存中、字典中,并定期检查这些数据来存储它:
for conip in conCounter.keys():
d = conCounter[conip]
for ts in d.keys():
mlcol.find_one_and_update(
{"connip": conip},
{"$inc":{ts:d[ts]}},
upsert=True
)
这种方式的过程要快得多,但我发现单独更新每个计数器仍然需要很长时间。
有没有办法在一个命令中启动多个更新?
还有什么其他的想法可以让这个过程更快吗?
【问题讨论】:
-
首先索引
mlcolbyconnip。然后尝试使用bulk updates 它应该可以节省往返行程。