0

我在 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()不是使用正确的功能?

4

0 回答 0