【发布时间】:2018-02-22 10:51:07
【问题描述】:
我有一个 mongodb 集合,其中包含带有标签和日期字段的集合。
我想统计这个查询可以完成的所有标签的数量
db.collection.count( { tags: "abc" })
但我想将所有唯一标签的计数放在一起。而且我还想在日期上加上 where 条件,就像我想查询某个时间段一样。
【问题讨论】:
我有一个 mongodb 集合,其中包含带有标签和日期字段的集合。
我想统计这个查询可以完成的所有标签的数量
db.collection.count( { tags: "abc" })
但我想将所有唯一标签的计数放在一起。而且我还想在日期上加上 where 条件,就像我想查询某个时间段一样。
【问题讨论】:
一个非常简单的方法:
db.collection.distinct("tags", {dateField: {$gt: dateValue}}).forEach(function (tag) {
var count = db.collection.count({"tags" : tag})
})
【讨论】:
您可以使用 mongoDD 聚合框架来解决这个问题 (http://docs.mongodb.org/manual/applications/aggregation/)。以防万一您没有完成所有工作。您总是可以选择通过 map-reduce (http://docs.mongodb.org/manual/applications/map-reduce/) 来实现。我已经使用 map-reduce 来构建自己的搜索选项以满足特殊要求。因此,任何时间点 map-reduce 都将帮助您做您想做的事情,而这通过简单的查询是不可能的。我没有提供查询,因为我没有太多信息您希望如何获取数据以及您的集合看起来如何,但这两个选项都将帮助您非常轻松地获取它。
【讨论】:
你应该使用 find 和 count 的组合
db.collection.find({condition}).count
【讨论】: