1

...在它从 MongoDB 检索所有数据并通过网络传输之后?

我想问的是 - 在传统的数据库场景中,COUNT、SUM 等是在数据库端执行的。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 回答