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

如何在MongoDB中实现同集合内连接等价查询(EAV结构场景)

MongoDB EAV结构多条件交集查询实现方案

你可以通过MongoDB聚合管道实现需求,具体逻辑是先过滤符合单个条件的记录,再按domain_id分组筛选同时命中所有条件的结果,完整语句如下:

db.你的集合名.aggregate([
  // 第一步:过滤出所有符合两个条件中任意一个的记录,缩小计算范围
  {
    $match: {
      $or: [
        { key: "A", value: 1 },
        { key: "C", value: 3 }
      ]
    }
  },
  // 第二步:按domain_id分组,收集每个domain_id命中的不重复key
  {
    $group: {
      _id: "$domain_id",
      matched_keys: { $addToSet: "$key" }
    }
  },
  // 第三步:筛选同时命中两个key的domain_id
  {
    $match: {
      matched_keys: { $all: ["A", "C"] }
    }
  },
  // 第四步:调整输出格式和预期一致
  {
    $project: {
      _id: 0,
      domain_id: "$_id"
    }
  }
])

优化提示

如果集合数据量较大,可以创建{key: 1, value: 1}的联合索引,大幅提升第一步$match的过滤效率。该方案天然兼容同一个domain_id下同一个key重复存储的场景,$addToSet会自动去重不会影响逻辑判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:07