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

求助:用MongoDB MQL拆分分类列表并提取两位置唯一值

解决MongoDB聚合获取categories数组指定位置唯一值的问题

正确聚合代码

collection.aggregate([
  {
    "$group": {
      "_id": null, // 将所有文档归为同一分组
      "categories1": { "$addToSet": { "$arrayElemAt": ["$categories", 0] } },
      "categories2": { "$addToSet": { "$arrayElemAt": ["$categories", 1] } }
    }
  },
  {
    "$project": { // 可选:移除_id字段,让输出更匹配期望格式
      "_id": 0
    }
  }
])

错误原因分析

你之前的代码中,$group阶段使用了_id: "$_id",这会让每个文档单独成为一个分组。每个分组仅包含单条文档的数据,$addToSet无法跨文档收集去重后的值,自然得不到全局唯一的集合结果。

代码逻辑说明

  1. _id: null:强制将所有文档聚合到同一个分组中,确保后续操作能覆盖全集合数据。
  2. $arrayElemAt:精准提取每个文档categories数组的第0位(categories1)和第1位(categories2)元素。
  3. $addToSet:在全局分组中,自动去重并收集所有提取到的元素,形成唯一值集合。
  4. $project:可选步骤,用于移除默认生成的_id字段,让输出结构完全匹配你给出的期望格式。

执行后会输出符合需求的文档:

{
  categories1 : [
    'Youth',
    'Thriller',
    'Newspaper'
  ],
  categories2 : [
    'Adventure',
    'Newspaper',
    'Essai'
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:35:24