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

如何查询含多条vehicleName记录的employeeId?是否需聚合?

解决方案

要找出拥有多条含vehicleName字段记录的employeeId,普通的find查询无法实现,必须使用MongoDB的聚合操作——因为需求核心是分组统计符合条件的记录数量,这是普通查询做不到的。

聚合查询代码

db.collection.aggregate([
  // 筛选出所有包含vehicleName字段的文档
  {
    $match: {
      vehicleName: { $exists: true }
    }
  },
  // 按employeeId分组,统计每组的记录数
  {
    $group: {
      _id: "$employeeId",
      vehicleCount: { $sum: 1 }
    }
  },
  // 过滤出记录数≥2的分组
  {
    $match: {
      vehicleCount: { $gte: 2 }
    }
  },
  // 调整输出格式,只返回employeeId(可选)
  {
    $project: {
      _id: 0,
      employeeId: "$_id"
    }
  }
])

各阶段说明

  • 第一阶段$match:先排除不包含vehicleName的文档(比如employeeId:2的摩托车记录),只保留有效数据。
  • $group:按employeeId对筛选后的文档分组,用$sum:1统计每个员工对应的vehicleName记录数量。
  • 第二阶段$match:只保留统计数量≥2的分组,也就是符合需求的员工ID。
  • $project:将分组的_id(即employeeId)重命名为employeeId,并去掉默认的_id字段,让输出更直观。

执行后会返回预期结果:

[ { "employeeId": 1 }, { "employeeId": 3 } ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:28:16