c++ - MongoDB中不使用count()函数,通过游标获取给定查询的结果数

标签 c++ mongodb

Mongo C++ 驱动程序提供了一个函数来获取带有给定查询结果的游标,例如获取 mycol 中字段 x 设置为 1 的所有文档> mydb 数据库的集合我们可以使用以下内容(假设 c 是指向正确配置的 DBClientBase 对象的指针):

auto_ptr<DBClientCursor> cursor = c->query("mydb.mycol", BSON(x << 1));

此外,还有一个函数可以获取给定查询的结果数:

int n = c->count("mydb.mycol", BSON(x << 1));

在开始处理查询结果之前,我需要知道结果的数量。我知道的方法是按以下方式组合这两个操作:

int n = c->count("mydb.mycol", BSON(x << 1));
// Do some checking based on n
...
auto_ptr<DBClientCursor> cursor = c->query("mydb.mycol", BSON(x << 1));
// Process cursor results
...

但是,这涉及 2 个 MongoDB 级别的操作。是否可以在查看结果之前知道游标提供的结果数,以便我可以节省调用 count() 函数?像这样:

auto_ptr<DBClientCursor> cursor = c->query("mydb.mycol", BSON(x << 1));
int n = (get the number from the 'cursor' variable in some way)
// Do some checking based on n
...
// Process cursor results
...

最佳答案

我似乎迟到了,但 cursor.size() 似乎完全符合您的要求。

https://docs.mongodb.com/manual/reference/method/cursor.size/#cursor.size

关于c++ - MongoDB中不使用count()函数,通过游标获取给定查询的结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32606775/

相关文章:

c++ - 从可变参数模板容器类中给定可变参数调用传入和传出方法

node.js - 具有 Mongoose 聚合和求和嵌套字段的 Node

c++ - 教程代码不显示 FreeType 库

c++ - 使用不同的编译器计算 std::hash

c++ - 如何使对象获取并存储任意但编译时已知大小的数组?

javascript - 如何修复 MongoDB Stitch 函数中的 "Result undefined"

Mongodb: 更新数据时主机上出现 "Network error while attempting to run command ' getlasterror'

javascript通过从另一个集合中查找来更新mongodb记录多个字段

MongoDB 自定义和唯一 ID

c++ - 类(class)组成和标题问题