MongoDB 聚合:计算两个日期字段相差天数并判断是否大于7
可以使用MongoDB的聚合操作符$subtract来计算两个日期字段相差的天数,并结合条件判断和$cond操作符实现需求。\n\n假设有一个集合名为test,包含以下文档结构:\n\n\n{\n "\_id": ObjectId("5f7dd6f2a9ce7096a7a5e520"),\n "start_date": ISODate("2020-10-07T00:00:00Z"),\n "end_date": ISODate("2020-10-18T00:00:00Z")\n}\n\n\n可以使用以下聚合管道操作来实现需求:\n\n\ndb.test.aggregate([\n {\n \$project: {\n \_id: 0,\n diff: {\n \$divide: [\n { \$subtract: ["\$end_date", "\$start_date"] },\n 1000 * 60 * 60 * 24\n ]\n }\n }\n },\n {\n \$project: {\n diff: 1,\n greater_than_7: {\n \$cond: {\n if: { \$gt: ["\$diff", 7] },\n then: 1,\n else: 0\n }\n }\n }\n }\n])\n\n\n上述聚合管道操作的含义如下:\n\n1. 使用$project操作符计算两个日期字段的相差天数,将结果存储在diff字段中。这里使用$subtract操作符计算相差的毫秒数,再使用$divide操作符将毫秒数转换为天数。\n2. 再次使用$project操作符,根据diff字段的值判断是否大于7。如果大于7,则将greater_than_7字段的值设置为1,否则设置为0。\n\n运行上述聚合操作后,将返回类似以下结果:\n\n\n{ "diff" : 11, "greater_than_7" : 1 }\n\n\n这里的diff表示两个日期字段相差的天数,greater_than_7表示是否大于7。
原文地址: https://www.cveoy.top/t/topic/pxI2 著作权归作者所有。请勿转载和采集!