我在 Amazon EC2 微型实例上设置了 MongoDB。数据库中有大约 700 万个项目。我正在尝试遍历所有这些并打印出有关每个项目的一些信息。我正在使用 python 包装器来做到这一点。
import pymongo as p
db_client = p.MongoClient()
db = db_client.my_awesome_db
photo_collection = db.photos
for photo in photo_collection.find():
print photo['attr']
我没有在内存中存储任何东西,并且数据库没有被其他任何东西使用。
由于查询运行时间很长,我曾经limit()
估计需要多长时间。我看到非线性时间,我的限制越大。例如,
- 限制->时间
- 1,000 -> 1 秒
- 10,000 -> 10 秒
- 100,000 -> 720 秒(约 12 分钟)
- 700,000 -> 9000 秒
这并不荒谬,但它大于线性(从 10k 到 100k 的跳跃似乎很糟糕)。我可以轻松地在一秒钟内迭代超过 700 万行文件,但以这种速度迭代整个数据库需要 25 小时。
我有什么配置错误吗?是find()
不是使用正确的功能?