我有一个mongodb集合,其架构如下:
const MessageSchema = {
message: {type: String},
category: {type String, allowedValues: ['a', 'b', 'c', 'd', 'e']},
createdAt: {type: Date}
}
这些消息文档以随机的时间间隔创建。我想创建一个图表所需的数据集,该图表绘制每个类别每分钟的消息数(count)。输出将是一个带有键的对象数组 time, a.count, b.count, c.count, d.count
以及 e.count
. 生成的数据集应仅考虑上周的数据,而不考虑更晚的数据。
数据集可能相当大。
我想我可以用这个 db.collection.mapReduce
. 我找到了一个解决方案,它适用于所有消息,但不按类别进行分隔。一个指向正确方向的指针将不胜感激。
2条答案
按热度按时间e5njpo681#
如果可以通过简单的聚合来实现这一点,则没有理由使用mapreduce:
whhtz7ly2#
您可以通过匹配发生在
createdAt
然后按分组category
: