Windows 7 64 SP1 -- MongoDB 2.2.0-rc2 -- Boost 1.42 -- MS VS 2010 Ultimate -- C++ 驱动程序
我有一个将 Query 对象作为参数的函数:
someFunction( Query qu )
优点:
- 可以接受 Query 对象或格式良好的 BSONObj。
- 可以访问查询助手,例如排序/提示/等。
坏处:
无法进行类似于 shell 的服务器端计数(相对于客户端的一批结果计数):
nstudents = db.students.find({'address.state' : 'CA'}).count();
IE,
unsigned long long n = c.count("mydb.users", qu);
引发错误:
cannot convert ... from 'mongo::Query' to 'const mongo::BSONObj &
因此,建议我使用 BSONObj 作为参数:
someFunction ( BSONObj qu )
优点:
- 可以做一个服务器端计数。
- 可以转换为 Query 并因此使用它的助手。
坏处:
- 使用该函数的任何人都必须注意不要将查询作为违反直觉的 Query 对象传递。
所以,我的问题是:
为什么 BSONObj 中没有实现 Query 类的辅助方法?或者反过来说,为什么不能用 Query 类来实现服务器端的计数方法呢?