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

如何检索MongoDB数据并按userId分组查询重复条目

MongoDB 按userId分组查找重复数据操作方法

参考数据说明

现有数据库示例数据

数据库数据示例

预期输出效果

预期输出示例

核心实现逻辑

使用MongoDB聚合管道完成需求,分为两个核心阶段:

  • 按userId字段分组,统计每个userId的出现次数
  • 过滤出出现次数大于1的分组,即为存在重复的userId

具体查询代码

基础版(仅返回重复userId和重复次数)

db.yourCollectionName.aggregate([
  {
    $group: {
      _id: "$userId",
      repeatCount: { $sum: 1 }
    }
  },
  {
    $match: {
      repeatCount: { $gt: 1 }
    }
  }
])

进阶版(同时返回重复条目的_id列表)

如果需要后续定位删除重复数据,可以加字段记录所有重复条目的_id:

db.yourCollectionName.aggregate([
  {
    $group: {
      _id: "$userId",
      repeatCount: { $sum: 1 },
      repeatEntryIds: { $push: "$_id" }
    }
  },
  {
    $match: {
      repeatCount: { $gt: 1 }
    }
  }
])

全量重复条目查询

如果需要导出所有重复条目的完整信息,可以执行以下两步查询:

// 第一步:获取所有存在重复的userId列表
const duplicateUserIdList = db.yourCollectionName.aggregate([
  { $group: { _id: "$userId", count: { $sum: 1 } } },
  { $match: { count: { $gt: 1 } } }
]).map(item => item._id)

// 第二步:查询这些userId对应的所有完整条目
db.yourCollectionName.find({ userId: { $in: duplicateUserIdList } })

注意:将代码中的yourCollectionName替换为你实际的集合名称即可使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:54:04