在MongoDB聚合框架中,可以使用$subtract运算符来计算两个日期字段的差值,并将结果转换为天数。然后,可以使用$cond运算符来根据差值是否大于1来返回相应的值。

假设有一个集合名为collection,其中包含两个日期字段field1和field2,可以使用以下聚合管道来实现您的需求:

db.collection.aggregate([
  {
    $project: {
      diff: {
        $subtract: [
          { $dateFromString: { dateString: "$field1" } },
          { $dateFromString: { dateString: "$field2" } }
        ]
      }
    }
  },
  {
    $project: {
      result: {
        $cond: {
          if: { $gt: [ { $divide: [ "$diff", 86400000 ] }, 1 ] },
          then: { $add: [ { $divide: [ "$diff", 86400000 ] }, 1 ] },
          else: 0
        }
      }
    }
  }
])

在上述聚合管道中,首先使用$subtract运算符计算field1和field2之间的差值,然后使用$divide运算符将差值转换为天数(1天 = 86400000毫秒),并将结果存储在diff字段中。接下来,使用$cond运算符来检查diff是否大于1,如果是,则使用$add运算符将结果加1,否则返回0,并将结果存储在result字段中。

请注意,上述聚合管道中使用了$dateFromString运算符来将字符串日期转换为日期对象。如果您的日期字段已经是日期对象,则可以省略这一步骤。此外,上述聚合管道中的日期差值单位是毫秒,如果您需要以其他单位进行计算,请相应地调整除数

mongodb 聚合 $sum 两个时间字段转换成yyyy-mm-dd相减是否大于1 是的话加一不是加0

原文地址: https://www.cveoy.top/t/topic/hOBx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录