我有包含日期的文件,我想知道如何按季度对它们进行分组?
我的方案是:
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:
}
}
3条答案
按热度按时间z4bn682m1#
您可以使用
$cond
运算符来检查:$month
是<= 3
,投影一个名为quarter
且值为"一"的字段。$month
为<= 6
,投影一个名为quarter
的字段,其值为"2"。$month
为<= 9
,投影一个名为quarter
的字段,其值为"3"。quarter
的值将是"第四"。$group
乘以quarter
字段。代码:
特定于您的架构:
z3yyvxxp2#
您可以使用以下命令按季度对文档进行分组。
qyzbxkaa3#
从
Mongo 5
开始,它是新的$dateTrunc
聚合运算符的完美用例:$dateTrunc
在quarter
的开头截断日期(截断unit
),这是一种对每季度日期的取模。输出中的季度将由它们的第一天定义(
Q3 2013
将为2013-07-01
),并且您可以随时使用$dateToString
投影来调整它。