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

Mongoose如何基于closeTime获取每个coin唯一值对应的最新文档

实现方案

当然可以实现该需求,你可以通过Mongoose的聚合查询完成,核心逻辑是排序后按coin分组取每组第一条记录。

前置优化建议(可选,推荐添加)

提前为coin和closeTime创建联合索引,可大幅提升查询效率,索引创建代码如下:

mySchema.index({ coin: 1, closeTime: -1 });

具体查询代码

const latestCoinRecords = await MyModel.aggregate([
  // 1. 先按coin升序、closeTime倒序排列,保证每个coin的最新记录排在分组最前
  { $sort: { coin: 1, closeTime: -1 } },
  // 2. 按coin字段分组,取每组的第一条数据即为对应coin的最新文档
  {
    $group: {
      _id: "$coin",
      latestRecord: { $first: "$$ROOT" }
    }
  },
  // 3. 可选步骤:将存储最新文档的latestRecord字段平铺到返回结果根层级
  {
    $replaceRoot: { newRoot: "$latestRecord" }
  }
])

自定义返回字段说明

如果你不需要返回完整文档,只需要特定字段,可以修改$group阶段的逻辑,按需指定要返回的字段即可,示例如下:

{
  $group: {
    _id: "$coin",
    recordId: { $first: "$_id" },
    closeTime: { $first: "$closeTime" },
    volume: { $first: "$volume" }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:24:03