在MongoDB聚合中获取两个日期之间的工作天数,可以通过以下步骤实现:
{
$match: {
date: {
$gte: ISODate("2022-01-01"), // 开始日期
$lte: ISODate("2022-01-31") // 结束日期
}
}
}
{
$group: {
_id: {
year: { $year: "$date" }, // 按年份分组
month: { $month: "$date" } // 按月份分组
},
count: { $sum: 1 } // 统计每个分组的文档数量
}
}
{
$project: {
_id: 0,
year: "$_id.year",
month: "$_id.month",
workdays: {
$subtract: [
"$count",
{
$multiply: [
2,
{
$floor: {
$divide: [
{ $add: [{ $dayOfWeek: "$date" }, 5] },
7
]
}
}
]
}
]
}
}
}
{
$sort: {
year: 1,
month: 1
}
}
综上所述,完整的MongoDB聚合查询可以如下所示:
db.collection.aggregate([
{
$match: {
date: {
$gte: ISODate("2022-01-01"), // 开始日期
$lte: ISODate("2022-01-31") // 结束日期
}
}
},
{
$group: {
_id: {
year: { $year: "$date" }, // 按年份分组
month: { $month: "$date" } // 按月份分组
},
count: { $sum: 1 } // 统计每个分组的文档数量
}
},
{
$project: {
_id: 0,
year: "$_id.year",
month: "$_id.month",
workdays: {
$subtract: [
"$count",
{
$multiply: [
2,
{
$floor: {
$divide: [
{ $add: [{ $dayOfWeek: "$date" }, 5] },
7
]
}
}
]
}
]
}
}
},
{
$sort: {
year: 1,
month: 1
}
}
])
对于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议您在腾讯云官方网站上查找相关产品,例如腾讯云数据库MongoDB、腾讯云云函数(用于聚合查询的计算)、腾讯云云监控(用于监控数据库性能)等。
领取专属 10元无门槛券
手把手带您无忧上云