【mongodb学习教程】aggregate聚合日期

mongodb 聚合 aggregate

聚合条件 日期

过滤条件描述
$dayOfYear得到一年中的第几天(1-365)
$dayOfMonth得到该月的第几天(1-31)
$dayOfWeek得到本周的星期几(注意按欧美习惯,星期日是 1,2 - 7 对应于星期一至星期六)
$year得到年份
$month得到月份
$week得到正处于该年的第几个星期(0-52)
$hour得到小时
$minute得到分钟
$second得到秒
$millisecond得到毫秒(0-999)

主要介绍 $week, $year, $month, $hour, $minute, $dayOfYear, $dayOfMonth, $dayOfWeek 等

看几个阳历

1
2
3
4
5
// 集合 user
{ _id: ObjectId(xxxxxx), curDate: ISODate("2019-09-03T15:19:42.739Z"), num: 0 }
{ _id: ObjectId(yyyyyy), curDate: ISODate("2019-09-13T12:19:42.739Z"), num: 3 }
{ _id: ObjectId(zzzzzz), curDate: ISODate("2019-09-23T10:19:42.739Z"), num: 2 }
{ _id: ObjectId(aaaaaa), curDate: ISODate("2019-09-03T11:19:42.739Z"), num: 1 }

样例一
筛选代码

1
2
3
4
5
6
7
8
9
10
user.aggregate([{
$group: {
_id: {
mth: { $month: '$curDate' },
},
count: {
$sum: 1
}
}
}]);

aggregate 是mongodb聚合, 括号内的数组是代码各种管道运算
$group 是表示按组

计算结果是

1
{ _id: { mth: 9 }, count: 4}

表示 { mth: xx }月份筛选
唯一键是 { mth: 9 }
$sum 统计总数,总数是 4

样例二
筛选代码

1
2
3
4
5
6
7
8
9
10
user.aggregate([{
$group: {
_id: {
day: { $dayOfMonth: '$curDate' },
},
count: {
$sum: 1
}
}
}]);

计算结果是

1
2
3
{ _id: { day: 3 }, count: 2}
{ _id: { day: 13 }, count: 1}
{ _id: { day: 23 }, count: 1}

{ $dayOfMonth: ‘$curDate’ } 表示对字段 curDate 中按月中天数 分组
从原数据来看,月中天数有 3、 13、 23四种
分组进行 $sum 计算后,得到结果

坚持原创技术分享,您的支持将鼓励我继续创作!