MongoDB 聚合 $sum: 计算两个日期字段差值并判断是否大于7天
要实现这个需求,需要使用 MongoDB 的聚合操作符和日期操作符。
假设有一个集合名为'collection_name',包含两个时间字段'date1' 和 'date2',我们可以使用聚合操作符'$project' 和日期操作符'$dateDiff' 来计算两个日期之间的差值,然后使用条件判断操作符'$cond' 来判断差值是否大于 7,如果是则返回 1,否则返回 0。
以下是使用 MongoDB 的聚合操作实现该需求的示例代码:
db.collection_name.aggregate([
{
$project: {
diff: {
$subtract: [
{ $toDate: '$date1' }, // 将 date1 字段转换为日期类型
{ $toDate: '$date2' } // 将 date2 字段转换为日期类型
]
}
}
},
{
$project: {
result: {
$cond: {
if: { $gt: [{ $divide: [ { $divide: [ '$diff', 1000 ] }, 86400 ] }, 7] },
then: 1,
else: 0
}
}
}
}
])
在上述代码中,我们首先使用'$project' 操作符计算两个日期字段之间的差值,并将结果保存在'diff' 字段中。然后再次使用'$project' 操作符,使用'$cond' 条件判断操作符判断'diff' 字段是否大于 7 天,并将结果保存在'result' 字段中。最终返回的结果中,'result' 字段的值为 1 表示大于 7 天,为 0 表示不大于 7 天。
请注意,上述代码中假设日期字段的值已经是 ISO 8601 日期字符串,如果不是的话,可能需要使用其他操作符对日期进行转换。另外,上述代码中的日期差值单位为秒,如果需要以天为单位,需要根据需要进行转换。
原文地址: https://www.cveoy.top/t/topic/pxJf 著作权归作者所有。请勿转载和采集!