Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pymongo明显比mongo shell慢?_Python_Mongodb_Shell_Pymongo - Fatal编程技术网

Python Pymongo明显比mongo shell慢?

Python Pymongo明显比mongo shell慢?,python,mongodb,shell,pymongo,Python,Mongodb,Shell,Pymongo,我对mongodb比较陌生,在pymongo中有一个性能问题。我有一个50 GBs(未压缩)20 GBs(通过WiredTiger压缩)的集合,包含大约3900万个文档。在索引字段上查询它会得到大约125000个文档和150Mbs未压缩的结果。当我在mongo shell中执行以下操作时,大约需要一秒钟 var result = db.my_collection.find(my_query).toArray() 然而,当我在pymongo做同样的事情时,需要7秒以上 db = pymongo.

我对mongodb比较陌生,在pymongo中有一个性能问题。我有一个50 GBs(未压缩)20 GBs(通过WiredTiger压缩)的集合,包含大约3900万个文档。在索引字段上查询它会得到大约125000个文档和150Mbs未压缩的结果。当我在mongo shell中执行以下操作时,大约需要一秒钟

var result = db.my_collection.find(my_query).toArray()
然而,当我在pymongo做同样的事情时,需要7秒以上

db = pymongo.MongoClient()['my_db']
result = list(db['my_collection'].find(my_query)) 
一些额外信息:

  • 我使用的是Ubuntu 14.04、python 2.7.6、pymongo 3.2和mongo 3.2

  • 我认为我的pymongo被配置为使用C,因为我安装了python dev,并且pymongo.has_C()和bson.has_C()都显示为True

  • 一切都在本地运行


我发现很难相信pymongo比mongo外壳慢7倍。我遗漏了什么?

尝试使用探查器运行它,并检查时间是否花在python客户端。另外,您可能想查看Monary:可能是python utf8字符串解码()“速度快了八倍”->,直到他调用python的utf8解码器。@Brandt,您最终解决了问题吗?我在蒙哥希尔和皮蒙戈之间面临着更糟糕的速度惩罚。@clocker我从来没有真正弄清这件事的真相。相反,由于花费的时间似乎主要是将mongo文档转换为Python对象,因此我采用了“只从mongo中获取您绝对需要的内容”的思路/准则。在将结果数据返回Python之前,我更加强调使用管道,并在mongo中尽可能多地进行过滤和处理。希望这至少有点帮助!