目前我获取文件通过光标在pymongo迭代,例如:如何快速获取所有文件的MongoDB pymongo
for d in db.docs.find():
mylist.append(d)
以供参考,在同一组数据(7M记录)的执行使用fetchall大约需要上面的方法需要几分钟时间20秒。
是否有更快的方式读取mongo中的批量数据?对不起,我是mongo的新手,如果需要更多信息,请告诉我。
目前我获取文件通过光标在pymongo迭代,例如:如何快速获取所有文件的MongoDB pymongo
for d in db.docs.find():
mylist.append(d)
以供参考,在同一组数据(7M记录)的执行使用fetchall大约需要上面的方法需要几分钟时间20秒。
是否有更快的方式读取mongo中的批量数据?对不起,我是mongo的新手,如果需要更多信息,请告诉我。
使用$自然排序将绕过索引并按文件存储顺序返回文件,这意味着mongo不必随意在磁盘上随机读取。
https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order
的性能,如果你想使用的查询变得严重退化。你永远不应该依赖FIFO排序。 Mongo允许自己在其存储层中移动文档。如果你不关心订单,那就这样吧。
此排序是内部实现的功能,你应该 不在我
for d in db.docs.find().sort({ $natural: 1 }):
mylist.append(d)
在Python中,你也想使用排气游标类型依赖于任何特定的结构告诉mongo服务器在不等待pymongo驱动程序确认每个批次的情况下回传结果
https://api.mongodb.com/python/current/api/pymongo/cursor.html#pymongo.cursor.CursorType.EXHAUST
请注意,它永远不会像壳一样快。在mongo/bson-> pymongo-> you之间移动数据的最慢方面是在python中使用UTF8字符串解码。
你只需要做出一个投与list()
功能
pymongo_cursor = db.collection.find()
all_data = list(pymongo_cursor)
由于使用天然标志肯定是有帮助。 –