在MongoDB聚合框架中,可以使用$subtract运算符来计算两个日期字段的差值,并将结果转换为天数。然后,可以使用$cond运算符来根据差值是否大于1来返回相应的值。\n\n假设有一个集合名为collection,其中包含两个日期字段field1和field2,可以使用以下聚合管道来实现您的需求:\n\n\ndb.collection.aggregate([\n {\n \$project: {\n diff: {\n \$subtract: [\n { \$dateFromString: { dateString: "\$field1" } },\n { \$dateFromString: { dateString: "\$field2" } }\n ]\n }\n }\n },\n {\n \$project: {\n result: {\n \$cond: {\n if: { \$gt: [ { \$divide: [ "\$diff", 86400000 ] }, 1 ] },\n then: { \$add: [ { \$divide: [ "\$diff", 86400000 ] }, 1 ] },\n else: 0\n }\n }\n }\n }\n])\n\n\n在上述聚合管道中,首先使用$subtract运算符计算field1和field2之间的差值,然后使用$divide运算符将差值转换为天数(1天 = 86400000毫秒),并将结果存储在diff字段中。接下来,使用$cond运算符来检查diff是否大于1,如果是,则使用$add运算符将结果加1,否则返回0,并将结果存储在result字段中。\n\n请注意,上述聚合管道中使用了$dateFromString运算符来将字符串日期转换为日期对象。如果您的日期字段已经是日期对象,则可以省略这一步骤。此外,上述聚合管道中的日期差值单位是毫秒,如果您需要以其他单位进行计算,请相应地调整除数。


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

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