[英]Removing duplicates from MongoDB but MongoDB db.collection.find() return empty result
[英]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数据结构。 根据定义,这两个过程都不会很快。 结合起来,它们将变得非常慢,并且我没有意识到没有解决方法。
如果您打算转储整个集合,则可能需要查看旨在执行此任务的mongodump
或mongoexport
。
通过立即将光标转换为列表,完全跳过列表理解步骤(这可能是滞后的原因):
raw_data = list(db_database.collection_name.find())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.