繁体   English   中英

db.collection.find()花费太多,无法返回完整的数据

[英]db.collection.find() taking too much to return complete data

我正在执行以下操作以从MongoDB集合中获取完整数据。

db_client = MongoClient(host='host')
db_database = db_client['db_name']
raw_data = db_database.collection_name.find()
result_data = [row for row in raw_data]
return result_data

返回花费了太多时间。 从集合中获取完整数据的最佳方法是什么?

如果您有很多文档,则此行:

result_data = [row for row in raw_data]

是Python花费大部分时间的地方。

根据您要对文档执行的操作,您可以执行以下操作:

for row in raw_data:
    # process each row
    print row

但是,如果您打算返回整个集合而不是对其进行处理,则需要进行集合扫描(等效于SQL中的表扫描)并创建大型Python数据结构。 根据定义,这两个过程都不​​会很快。 结合起来,它们将变得非常慢,并且我没有意识到没有解决方法。

如果您打算转储整个集合,则可能需要查看旨在执行此任务的mongodumpmongoexport

通过立即将光标转换为列表,完全跳过列表理解步骤(这可能是滞后的原因):

raw_data = list(db_database.collection_name.find())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM