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

MongoDB如何查询单字段值重复的所有原始文档

查询所有title字段值重复的文档

你的文档为MongoDB标准文档结构,可通过以下方法实现需求,不需要提前指定固定重复title值,最终返回所有存在重复title的完整原始文档,不会做分组聚合输出:

方法1:分两步查询(性能更优,适合大数据量集合)

  1. 先通过聚合拿到所有出现次数≥2的title值列表
    // 执行后得到所有重复的title组成的数组
    const duplicateTitleList = db.你的集合名.aggregate([
        { $group: { _id: "$title", count: { $sum: 1 } } },
        { $match: { count: { $gte: 2 } } },
        { $replaceRoot: { newRoot: "$_id" } }
    ]).toArray()
    
  2. 用$in操作符匹配所有对应文档
    // 直接返回所有title重复的完整原始文档
    db.你的集合名.find({
        title: { $in: duplicateTitleList }
    })
    

方法2:单聚合管道一步输出(不需要中间变量)

如果不想拆分查询步骤,可以直接用以下聚合语句直接得到结果,返回结构和find查询一致:

db.你的集合名.aggregate([
    // 按title分组,统计数量同时暂存所有同组文档
    {
        $group: {
            _id: "$title",
            count: { $sum: 1 },
            matchedDocs: { $push: "$$ROOT" }
        }
    },
    // 过滤掉仅出现1次的非重复title
    { $match: { count: { $gte: 2 } } },
    // 拆解暂存的文档数组,还原为单条文档结构
    { $unwind: "$matchedDocs" },
    // 替换根节点,输出原始文档格式
    { $replaceRoot: { newRoot: "$matchedDocs" } }
])

注意:如果你的集合数据量较大,优先用方法1,同时建议给title字段加索引,能大幅提升查询速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:33:20