



















你想要在 MongoDB 中统计指定时间范围 [t1, t2] 内,每辆车(按 sn 字段)的最新一条行程记录,我会为你提供精准的聚合查询语句。
参考链接:https://geek-docs.com/mongodb/mongodb-top-articles/1018100_mongodb_aggregation.html
要实现这个需求,核心是通过 MongoDB 的聚合管道完成以下步骤:
// 定义时间范围(请替换为你实际的时间值)
const t1 = new Date("2026-01-01T00:00:00.000Z"); // 开始时间
const t2 = new Date("2026-01-31T23:59:59.999Z"); // 结束时间
// 聚合查询语句
db.riding_records.aggregate([
// 第一步:筛选时间范围内的记录
{
$match: {
start_time: {
$gte: t1, // 大于等于开始时间t1
$lte: t2 // 小于等于结束时间t2
}
}
},
// 第二步:按车序列号分组,保留每组最新的记录
{
$group: {
_id: "$sn", // 按sn分组
latestRecord: { $first: "$$ROOT" } // 保留排序后的第一条(最新)记录
}
},
// 第三步:按开始时间降序排序(确保每组第一条是最新的)
{
$sort: { "latestRecord.start_time": -1 }
},
// 第四步:还原记录结构(可选,让输出更整洁)
{
$replaceRoot: { newRoot: "$latestRecord" }
}
]);
$first取到的是最新记录此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。