使用mongodb ruby​​驱动程序计算带参数的操作

时间:2010-11-05 07:05:37

标签: ruby mongodb nosql

我试图使用Ruby驱动程序使用count()Mongodb功能(db.collection_name.count({data:value})。我尝试使用de collection.count方法,但它不接受任何参数。

我检查了collection.count()方法文档,它只返回集合中对象的总量,在这里你无法将“filter”参数传递给这个方法。

是否可以以其他方式使用count()Mongodb功能和过滤器参数?

3 个答案:

答案 0 :(得分:3)

  

是否可以以其他方式使用count()Mongodb功能和过滤器参数?

从shell(命令行),您可以执行以下操作:

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

显然,你必须做一些与Ruby类似的事情,但它应该非常简单。

答案 1 :(得分:2)

对于那些只想使用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

答案 2 :(得分:0)

实际上可以像在命令行中那样使用.count(),它的记录很差。

Mongo命令行:

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

Mongo Ruby驱动程序:

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

此选项和其他.count()选项为文档here