Rus*_*ord 7 python mongodb nosql pymongo
目前我通过在pymongo中迭代游标来获取文档,例如:
for d in db.docs.find():
mylist.append(d)
Run Code Online (Sandbox Code Playgroud)
作为参考,对同一组数据(7m记录)执行fetchall大约需要20秒,而上述方法需要几分钟.
有没有更快的方式读取mongo中的批量数据?对不起,我是mongo的新手,如果需要更多信息,请告诉我.
bau*_*ace 13
使用$ natural sort将绕过索引并按照它们存储在磁盘上的顺序返回文档,这意味着mongo不必随意读取磁盘.
https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order
如果要使用查询,性能会严重降低.你永远不应该依赖FIFO排序.Mongo允许自己在其存储层中移动文档.如果您不关心订单,那就这样吧.
此排序是内部实现功能,您不应该依赖i中的任何特定结构
for d in db.docs.find().sort( { $natural: 1 } ):
mylist.append(d)
Run Code Online (Sandbox Code Playgroud)
在python中,你还想使用EXHAUST游标类型告诉mongo服务器流回结果而不等待pymongo驱动程序确认每个批处理
https://api.mongodb.com/python/current/api/pymongo/cursor.html#pymongo.cursor.CursorType.EXHAUST
请注意,它永远不会像贝壳一样快.在mongo/bson-> pymongo->之间移动数据的最慢方面是你在python中的UTF8字符串解码.
| 归档时间: |
|
| 查看次数: |
5280 次 |
| 最近记录: |