Mongoose 如何在MongoDB中按季度分组日期
我有一个包含日期的文档,我想按季度对文档进行分组。 我如何在MongoDB中执行此操作?Mongoose 如何在MongoDB中按季度分组日期,mongoose,mongodb-query,Mongoose,Mongodb Query,我有一个包含日期的文档,我想按季度对文档进行分组。 我如何在MongoDB中执行此操作? 我的模式是: var ekgsanswermodel = new mongoose.Schema({ userId: {type: Schema.Types.ObjectId}, topicId : {type: Schema.Types.ObjectId}, ekgId : {type: Schema.Types.ObjectId}, answerSubmitted :{t
我的模式是:
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、2、3个月。
第二季度包括截至第四季度的第4、5、6个月等。
我的最后答案应该是:
"result" : [
{
_id: {
quater:
},
_id: {
quater:
},
_id: {
quater:
},
_id: {
quater:
}
}
您可以使用操作员检查是否:
- 您可以使用下面的方法按季度对文档进行分组
{ $project : { dateAttempted : 1, dateQuarter: { $trunc : {$add: [{$divide: [{$subtract: [{$month: "$dateAttempted"}, 1]}, 3]}, 1]} } } }
你试过使用MongoDB的mapreduce吗?我想你可以用四舍五入的月数/4来描绘你的月份。类似于emit的东西(this.number/4,this.number)。在REDUCE部分,您一直在分组。我没有尝试过mapreduce。我可以举个例子。我也在上面添加了模式。不管我的解决方案是@grishabh,下面的解决方案更好。Mongodb mapreduce不允许由于reduce操作而拥有数组。参考:thanx@Batshray,请您在spring data mongodb中进行此查询。