...MongoDB からすべてを取得し、ネットワーク経由で転送した後ですか?
私が尋ねようとしているのは、従来の DB シナリオでは、COUNT、SUM などは DB 側で実行されるということです。PyMongo はすべてのレコードをネットワーク経由で転送してから集計を行いますか?
たとえば、PyMongo のチュートリアルのクエリを見ています。posts.find({"author": "Mike"}).count()
...MongoDB からすべてを取得し、ネットワーク経由で転送した後ですか?
私が尋ねようとしているのは、従来の DB シナリオでは、COUNT、SUM などは DB 側で実行されるということです。PyMongo はすべてのレコードをネットワーク経由で転送してから集計を行いますか?
たとえば、PyMongo のチュートリアルのクエリを見ています。posts.find({"author": "Mike"}).count()
pymongo.cursor.Cursor の count() メソッドは、実際にはドキュメントではなくカウントのみを返す「count」コマンドをサーバーに送信します。同じことを自分で行うことができます:
>>> db = c.foo
>>> for doc in db.things.find(): print doc
...
{u'_id': ObjectId('4de671821121812a0087101b'), u'foo': u'bar'}
{u'_id': ObjectId('4de671ea1121812a0087101c'), u'buzz': u'baz'}
>>> db.command('count', 'things', query={'foo': 'bar'})
{u'ok': 1.0, u'n': 1.0}