什么是正确的实施方式" count"原始MongoDB协议的方法?

时间:2015-12-14 02:42:26

标签: mongodb network-protocols

我已阅读MongoDB Wire Protocol并实施自己的驱动程序。

我试图实施"计数"返回满足收集条件的文档数量的方法。 但在上面的手册中,我找不到适合计数方法的操作码。

通过执行OP_QUERY获取所有需要的文档并在驱动程序代码中计算它们是可能的。但它看起来效率低下(文件中不必要的内容将在网络上发送)。

我可以实施" count"方法有效吗?

1 个答案:

答案 0 :(得分:0)

我创建了mongo-proxy脚本,代理MongoDB协议并在MongoDB服务器和标准mongo客户端程序之间运行。

结果,我确认请求消息发送如下。

命令:

> use test-db
> db.TestCollection.find({'a': 1}).count()
3

消息:

===== client -> server =====
type: OP_QUERY
full_collection_name: test-db.$cmd
query: {'count': 'TestCollection', 'query': {'a': 1.0}, 'fields': {}}

===== server -> client =====
{'n': 3.0, 'ok': 1.0}

我可以从test-db。$ cmd集合中获取计数值。 : - )