avgObjSize
280バイトの見積もりと一致していません。オブジェクトの平均は約5MBでstorageSize
1GB近くです。メモリに制約がある場合、1 GBのファイルすべてにアクセスする必要があるクエリを実行すると、多くのページフォールトが発生します。
コンパクト を試しましたか ?
db.runCommand({compact: 'Aggregates'})
または
db.repairDatabase()
それでもうまくいかない場合は、ドキュメント全体をプルするのではなく、合計に必要なフィールドだけをプルバックしてみてください。これらのドキュメントは実際には5MBであり、データをネットワーク経由でプルするのに時間がかかる可能性があります。
def get_total():
start = datetime.now()
print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
end = datetime.now()
print (end-start).seconds