You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB如何查询每个不同姓名对应最新日期的完整文档

你遇到的问题根源是:对date1和city分别使用$max运算时,两个字段的计算是完全独立的,你拿到的确实是最大的date1,但$max: "$city"是按字符串字典序计算出的最大值,和最大date1对应的city没有关联,才会出现字段不匹配的情况。

可以用先排序再分组取首条的逻辑来修正查询,正确的聚合语句如下:

db.getCollection('students').aggregate([
  // 筛选状态为ACTIVE的文档
  { $match: { status: "ACTIVE" } },
  // 同姓名下按日期倒序排列,最新的记录排在同组最前面
  { $sort: { name: 1, date1: -1 } },
  // 按姓名分组,直接取每组第一条记录的对应字段,保证字段来自同一条最新文档
  { $group: {
    _id: "$name",
    city: { $first: "$city" },
    date1: { $first: "$date1" }
  } },
  // 调整输出字段格式,匹配你需要的返回结构
  { $project: {
    _id: 0,
    name: "$_id",
    city: 1,
    date1: 1
  } }
])

运行上述语句即可得到你期望的正确结果。

内容的提问来源于stack exchange,提问作者Adriano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:06:03