【发布时间】:2015-04-02 04:42:17
【问题描述】:
我有包含日期的文档,我想知道如何按季度对它们进行分组?
我的架构是:
var ekgsanswermodel = new mongoose.Schema({
userId: {type: Schema.Types.ObjectId},
topicId : {type: Schema.Types.ObjectId},
ekgId : {type: Schema.Types.ObjectId},
answerSubmitted :{type: Number},
dateAttempted : { type: Date},
title : {type: String},
submissionSessionId : {type: String}
});
第 1 季度包含第 1、2、3 个月。第 2 季度包含第 4、5、6 个月等等,直到第 4 季度。
我的最终结果应该是:
"result" : [
{
_id: {
quater:
},
_id: {
quater:
},
_id: {
quater:
},
_id: {
quater:
}
}
【问题讨论】:
-
你试过使用 MongoDB 的 mapreduce 吗? docs.mongodb.org/manual/core/map-reduce 我想你可以用四舍五入的 MonthNumber/4 来映射你的月份。像emit(this.number/4,this.number)这样的东西。在 REDUCE 部分,您将所有月份分组。
-
我没有尝试过mapreduce。可以给我一个例子。我也在上面添加了架构。
-
别介意我的解决方案@grishabh,下面的那个更好。 Mongodb mapreduce 不允许您将数组作为 reduce 操作的结果。参考:stackoverflow.com/questions/8175015/…
标签: mongodb date mongoose mongodb-query quarter