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

如何用Mongoose按美国州统计Job文档数量?

按美国州统计职位数量的Mongoose聚合查询方案

要实现按州统计职位数量的需求,你需要使用MongoDB的聚合管道来分组并计数,这比$distinct更适合这类统计场景。以下是直接可用的代码实现:

核心查询代码

const Job = mongoose.model('Job', JobSchema);

Job.aggregate([
  // 可选:如果需要仅统计特定状态的职位,取消下方注释并修改条件
  // { $match: { status: { $in: ['Available', 'Accepted'] } } },
  {
    $group: {
      _id: '$state', // 按state字段分组
      count: { $sum: 1 } // 统计每组的职位数量
    }
  },
  {
    $project: {
      _id: 0, // 隐藏默认生成的_id字段
      state: '$_id', // 将分组的_id重命名为state
      count: 1 // 保留count字段
    }
  },
  { $sort: { count: -1 } } // 可选:按数量降序排列结果
])
.then(aggregatedResult => {
  // 包装成你期望的输出格式
  const finalResult = { docs: aggregatedResult };
  console.log(finalResult);
})
.catch(error => {
  console.error('统计查询失败:', error);
});

代码说明

  1. $match(可选):用于过滤需要统计的职位,比如只统计Available状态的职位,或者排除Closed状态的,可根据业务需求灵活调整过滤条件。
  2. $group:这是统计的核心步骤,通过_id: '$state'将数据按州分组,$sum:1对每组的文档数量进行累加计数。
  3. $project:调整输出字段结构,把分组时生成的_id(即州代码)重命名为state,同时隐藏原_id字段,让结果结构完全匹配你的期望。
  4. $sort(可选):对结果按计数降序排列,方便直观查看职位数量多的州。

为什么$distinct不适用?

$distinct只能返回去重后的州代码数组,无法直接关联每个州对应的职位数量,因此无法满足你的统计需求,聚合管道才是这类分组统计场景的正确选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:50:14