Windows 7 64 SP1-
MongoDB 2.2.0-rc2-
提升1.42-
MS VS 2010 Ultimate-
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类实现服务器端计数方法?
最佳答案
unsigned long long count (const string &ns, const BSONObj &query=BSONObj(),
int options=0)
因此,
count
应该接收BSONObj
(或Base / Derived from BSONObj
)。Query
具有implicit c-tor
,它接收BSONObj
。Query (const BSONObj &b)
Query
具有公共(public)成员obj
,即BSONObj
。你的功能可以是
// i think const Query& qu will be better.
someFunction( Query qu )
对于
count
调用,您应该使用c.count("mydb.users", qu.obj);
关于c++ - MongoDB C++驱动程序服务器端查询计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12333725/