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

在Next.js中用Mongoose按User分组并汇总Amount的实现疑问

按User分组计算Amount总和的Mongoose实现方案

要实现按user字段分组并计算每个用户amount总和的需求,你需要替换原来的find()方法,改用Mongoose的aggregate()聚合查询,具体代码如下:

import Fill from '../../../models/bonusFill'

const fills = await Fill.aggregate([
  // 按user字段分组,计算每个组的amount总和
  {
    $group: {
      _id: '$user',
      totalAmount: { $sum: '$amount' }
    }
  },
  // 调整输出格式,匹配期望的结构
  {
    $project: {
      _id: 0, // 隐藏默认生成的_id字段
      user: '$_id', // 将分组的user值重命名为user字段
      amount: '$totalAmount' // 将求和结果重命名为amount字段
    }
  }
])

代码说明

  1. $group阶段:指定按user字段进行分组,使用$sum累加每个分组内的amount值,得到该用户的总金额,存储在totalAmount字段中。
  2. $project阶段:调整输出的字段结构,把分组用的_id(即原始的user值)重命名为user,把求和结果totalAmount重命名为amount,同时隐藏默认的_id字段,最终输出与你期望的结构完全一致。

执行这段代码后,返回的fills数据结构就会是你想要的:

{
  "fills": [
    {
      "user": "631ce46b9bed2e97ba77a0a3",
      "amount": 220
    },
    {
      "user": "632ce66b9bqd2e97baa795a4",
      "amount": 50
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:01:04