Windows 7 64 SP1 —
MongoDB 2.2.0-rc2 —
Повышение 1.42 —
MS VS 2010 Ultimate —
C ++ драйвер
У меня есть функция, которая принимает объект запроса в качестве параметра:
someFunction( Query qu )
Преимущества:
Недостаток:
Невозможно выполнить подсчет на стороне сервера (по сравнению с подсчетом на стороне клиента для пакета результатов)
сродни оболочке:
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 )
Преимущества:
Недостаток:
Итак, мои вопросы:
Почему вспомогательные методы класса Query не реализованы в BSONObj? Или, наоборот, почему не удалось реализовать метод подсчета на стороне сервера с помощью класса Query?
unsigned long long count (const string &ns, const BSONObj &query=BSONObj(),
int options=0)
Так, count
должен получить BSONObj
(или База / Производная от / от BSONObj
).
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);
Других решений пока нет …