$last(末元素累加器)
最后更新:2026-10-09
$last(末元素累加器)
$last 是累加器,在 $group 中返回组内最后一个文档的指定字段值,与 $first 对称。同样依赖输入顺序,使用前应 $sort。典型场景:取每组最新记录。也可在 $setWindowFields 中作为窗口操作符使用。
| 分类 | 累加器 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $group: { _id: <键>, last: { $last: "$字段" } } }
返回值:组内最后一条文档的字段值(按输入顺序)
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $last:取每组最新一条的价格
db.sales.aggregate([
{ $sort: { date: 1 } },
{ $group: { _id: '$item', lastPrice: { $last: '$price' } } }
])
运行结果:
{ "_id": "Pen", "lastPrice": 50 }
📌 注意事项
- 与 $first 对称,顺序依赖相同
- 取最新一条的惯用组合:$sort 时间升序加 $last
- $setWindowFields 中可用作窗口操作符
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q怎么取每组最新记录?
A$sort 按时间升序后 $group 用 $last,即可取到时间最新的值。
Q$last 不排序会怎样?
A结果是输入顺序的最后一条,通常没有业务意义。
Q$last 和 $top 有什么区别?
A$top 按排序规则取最优;$last 只按输入顺序取末尾,语义不同。