我正在执行以下操作从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
返回需要太多时间。从集合中获取完整数据的最佳方法是什么?
答案 0 :(得分:1)
如果你有很多文件,这一行:
result_data = [row for row in raw_data]
是Python花费大部分时间的地方。
根据您要对文档执行的操作,您可以执行以下操作:
for row in raw_data:
# process each row
print row
但是,如果您打算返回整个集合而不处理它,那么您正在进行集合扫描(相当于SQL中的表扫描)并创建一个大型Python数据结构。根据定义,任何一个过程都不会很快。结合起来,它们将变得非常缓慢,并且没有我知道的解决方法。
如果您的意图是转储整个集合,您可能需要查看mongodump
或mongoexport
,而不是设计用于执行此任务。
答案 1 :(得分:1)
通过将光标转换为刚刚接下来的列表,完全跳过列表理解步骤(这可能是滞后的原因):
raw_data = list(db_database.collection_name.find())