【发布时间】:2019-08-22 13:34:29
【问题描述】:
我正在使用 pymongo 从 mongo 服务器访问数据。服务器有数十亿个文档,所以我使用 find 和 skip 一次访问 n 个文档。我只需要访问那些将“sample_key_XYZ”作为_tag 的文档。
print('start',datetime.datetime.now())
a=db.collection.find({"_tag":re.compile('latest')}).skip(2000000).limit(2000)
print('end',datetime.datetime.now())
它工作正常光标在一秒钟内移动。但是当我尝试访问数据时它卡住了(需要几个小时才能执行) 即
print('start',datetime.datetime.now())
a=db.collection.find({"_tag":re.compile('sampe_key')}).skip(2000000).limit(2000)
for doc in a:
print(doc["_tag"])
break
print('end',datetime.datetime.now())
但如果我将跳过更改为一个小数字(2500),它的执行速度非常快(1s)
('开始', datetime.datetime(2019, 4, 1, 16, 59, 3, 685992)) ('end', datetime.datetime(2019, 4, 1, 16, 59, 3, 686293)) 在没有文档遍历的情况下使用。
【问题讨论】:
-
您针对哪个版本的 MongoDB 执行此操作?
-
MongoDB 版本:3.6.3
标签: mongodb python-2.7 pymongo