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

时间:2015-09-16 11:01:54

标签: c++ mongodb

Mongo C ++驱动程序提供了一个函数来获取带有给定查询结果的游标,例如,在x mycol集合中将字段mydb设置为1的所有文档1}}数据库我们可以使用以下内容(假设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
...

然而,这涉及到MongoDB级别的2个操作。在通过结果之前,是否可以知道游标提供的结果数量,这样我可以保存调用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
...

1 个答案:

答案 0 :(得分:0)

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

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