MongoDB 聚合操作:计算两个日期字段的差值并进行条件加减
你可以使用MongoDB的聚合框架来实现这个需求。具体的聚合操作可以如下所示:
db.collection.aggregate([
{
$project: {
dateDiff: {
$subtract: [
{ $dateToString: { format: "%Y-%m-%d", date: "$endDate" } },
{ $dateToString: { format: "%Y-%m-%d", date: "$startDate" } }
]
}
}
},
{
$project: {
daysDiff: {
$cond: {
if: { $gt: [{ $toInt: "$dateDiff" }, 1] },
then: { $add: [{ $toInt: "$dateDiff" }, 1] },
else: { $toInt: "$dateDiff" }
}
}
}
},
{
$group: {
_id: null,
totalDays: { $sum: "$daysDiff" }
}
}
])
在上面的代码中,首先使用$project阶段将endDate和startDate字段转换为格式为yyyy-mm-dd的字符串,并计算它们的差值dateDiff。然后,使用另一个$project阶段根据dateDiff的值进行条件判断,如果大于1,则加1,否则不变。最后,使用$group阶段将所有文档合并为一个,并使用$sum操作符计算daysDiff字段的总和。
请注意,这里假设endDate和startDate字段的数据类型为ISODate。如果数据类型不是ISODate,你需要根据实际情况进行相应的调整。
原文地址: https://www.cveoy.top/t/topic/pxGU 著作权归作者所有。请勿转载和采集!