Pymongo读取比mongo客户端(robomongo)慢得多

时间:2018-01-03 08:49:28

标签: python mongodb performance pymongo robo3t

在robomongo中查询非常快,在图片下方我确实检索了500个文档:

enter image description here

我在result.type创建了索引,我的测试代码:

def get_test_data(limit):
    return collection.find({'result.type':'detail'})[:limit]

def test_one_read_multi_process():

    print('mongodb read')
    t = Timer()
    TASKS = list(get_test_data(500))
    print(t.elapsed_time, '\n')

pymongo需要21.716秒,这太慢了。

测试mongodb 3.6,pymongo最新,python 2& 3

也许与...有关 Pymongo significantly slower than mongo shell?

但我想要一个解决方案。

2 个答案:

答案 0 :(得分:0)

也许您可以使用c扩展程序安装pymongo,以检查您是否已完成:

import pymongo
pymongo.has_c()

False表示不是True表示是。

要安装带有c扩展名的pymongo,您需要:

# Ubuntu or Debian
sudo apt-get install build-essential python-dev

# Red Hat based distributions
sudo yum install gcc python-devel

然后pip install pymongo

有一些参考:

答案 1 :(得分:0)

到目前为止get_test_data获取集合中的所有文档并对结果进行切片。

您希望对查询应用限制。

def get_test_data(limit):
    return collection.find({'result.type':'detail'}, limit=limit)