Подсчет операций с параметрами с драйвером mongodb ruby - PullRequest
1 голос
/ 05 ноября 2010

Я пытался использовать функцию Mongodb count () (db.collection_name.count ({data: value}) с использованием драйвера Ruby. Я пытался использовать метод de collection.count, но он не принимает никаких параметров.

Я проверил docs метода collection.count (), он возвращает только общее количество объектов в коллекции, где невозможно передать параметр «filter» этому методу.

Можно ли использовать функцию count () Mongodb с параметрами фильтра каким-либо другим способом?

Ответы [ 3 ]

3 голосов
/ 05 ноября 2010

Возможно ли использовать функцию Mongodb count () с параметрами фильтра каким-либо другим способом?

Из оболочки (командной строки) вы можете сделать следующее:

db.collection.find({ data : value}).count()

Очевидно, вам придется сделать что-то похожее с Ruby, но это должно быть довольно просто.

2 голосов
/ 03 марта 2014

Для тех, кто просто хочет получить ответ, используя драйвер ruby:

# actual number of records
DB["posts"].find({"author" => "john"}).to_a.length
=> 48
# *total* number of documents in the collection (the query matching is ignored)
DB["posts"].count({"author" => "john"})
=> 1431
# more efficient way (using the count server-side command)
DB["posts"].find({"author" => "john"}).count
=> 1431
0 голосов
/ 20 января 2015

На самом деле можно использовать .count(), как вы делаете в командной строке, это просто плохо документировано.

Монго командная строка:

db.User.find({"emails.5": {"$exists": true}}).count()

Драйвер Mongo Ruby:

db.collection('User').count({:query => {"emails.5" => {"$exists" => true}}})

Эта и другие .count() опции - документ здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...