Windows 7 64 SP1 - MongoDB 2.2.0-rc2 - 提升1.42 - MS VS 2010旗舰版 - C ++驱动程序
我有一个将Query对象作为参数的函数:
someFunction( Query qu )
优点:
缺点:
无法进行服务器端计数(与一批结果的客户端计数相比) 类似于shell:
nstudents = db.students.find({'address.state' : 'CA'}).count();
即,
unsigned long long n = c.count("mydb.users", qu);
引发错误:
cannot convert ... from 'mongo::Query' to 'const mongo::BSONObj &
所以,有人建议我使用BSONObj作为参数:
someFunction ( BSONObj qu )
优点:
缺点:
所以,我的问题是:
为什么在BSONObj中没有实现Query类的辅助方法?或者,相反,为什么不能使用Query类实现服务器端计数方法?
答案 0 :(得分:1)
unsigned long long count (const string &ns, const BSONObj &query=BSONObj(),
int options=0)
因此,count
应该会收到BSONObj
(或来自BSONObj
的Base / Derived /。)
Query
有implicit c-tor
,收到BSONObj
。
Query (const BSONObj &b)
Query
有公开成员obj
,即BSONObj
。
您的功能可以
// i think const Query& qu will be better.
someFunction( Query qu )
并且对于来电count
,您应该使用
c.count("mydb.users", qu.obj);