MongoDb查询 - 带条件的计数

5

我有一个MongoDB的集合,其中有一个带有标签和日期字段的文档。

我想要统计所有标签的数量,可以通过以下查询实现:

db.collection.count( { tags: "abc" })

但我想要获取所有唯一标签的计数。同时,我也想在日期上设置where条件,例如查询某个时间段。
5个回答

4
一个非常简单的方法:
db.collection.distinct("tags", {dateField: {$gt: dateValue}}).forEach(function (tag) {
    var count = db.collection.count({"tags" : tag})
})

1

你应该使用find和count的组合

db.collection.find({condition}).count

1
db.collection.aggregate([
   {"$group" : {_id:"$tags", count:{$sum:1}}}, {$sort:{"count":-1}}
])

1
您可以使用MongoDB聚合框架来解决这个问题(http://docs.mongodb.org/manual/applications/aggregation/)。如果您无法完成所有操作,您始终可以通过map-reduce(http://docs.mongodb.org/manual/applications/map-reduce/)来完成它。我已经使用map-reduce为特殊需求构建了自己的搜索选项。因此,在任何时候,map-reduce都将帮助您做您想做的事情,而这是简单查询无法实现的。我没有提供查询,因为我不知道您想如何获取数据以及您的集合是什么样子的,但这两个选项都将帮助您轻松获取它。

0
db.note.find({clientID:115, noteType:"CLINICALNOTE", noteID:{$gte:655393}}).count()

例如,如果当前的注释是655393,则查找客户115的剩余待处理注释。
从注释集合中查找所有客户为115且注释类型为临床且注释ID大于655,393的注释。
这可能会得到结果,例如160,111,即还有这么多注释待处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接