你可以使用MongoDB的聚合框架和日期操作符来实现这个需求。以下是一个示例聚合管道可以实现所需的逻辑:\n\njavascript\ndb.collection.aggregate([\n {\n $project: {\n dateDifference: {\n $subtract: [\n { $dateToString: { format: "%Y-%m-%d", date: "$date1" } },\n { $dateToString: { format: "%Y-%m-%d", date: "$date2" } }\n ]\n }\n }\n },\n {\n $project: {\n differenceInDays: {\n $cond: {\n if: { $gte: [{ $toDouble: "$dateDifference" }, 7] },\n then: 1,\n else: 0\n }\n }\n }\n },\n {\n $group: {\n _id: null,\n total: { $sum: "$differenceInDays" }\n }\n }\n])\n\n\n在上面的聚合管道中,首先使用$project阶段将两个时间字段转换为yyyy-mm-dd格式,然后使用$subtract操作符计算它们之间的差异。接下来,使用$project阶段和$cond操作符根据差异是否大于等于7来生成新的字段differenceInDays,如果是则为1,否则为0。最后,使用$group阶段将所有文档合并为一个,并使用$sum操作符计算differenceInDays字段的总和。\n\n请注意,上述聚合管道中的date1date2是示例字段名,你需要根据你的实际字段名进行替换。此外,这个聚合管道假设你的时间字段是MongoDB的日期类型,如果不是,请根据你的字段类型进行适当的调整。


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

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