1

...MongoDB からすべてを取得し、ネットワーク経由で転送した後ですか?

私が尋ねようとしているのは、従来の DB シナリオでは、COUNT、SUM などは DB 側で実行されるということです。PyMongo はすべてのレコードをネットワーク経由で転送してから集計を行いますか?

たとえば、PyMongo のチュートリアルのクエリを見ています。posts.find({"author": "Mike"}).count()

4

1 に答える 1

3

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}
于 2011-06-01T17:16:20.907 に答える