我试图使用Ruby驱动程序使用count()Mongodb功能(db.collection_name.count({data:value})。我尝试使用de collection.count方法,但它不接受任何参数。
我检查了collection.count()方法文档,它只返回集合中对象的总量,在这里你无法将“filter”参数传递给这个方法。
是否可以以其他方式使用count()Mongodb功能和过滤器参数?
答案 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。