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

如何在Mongoose中获取去重指定字段及对应单条关联image数据

解决方案

方法1:使用MongoDB聚合管道(推荐)

直接使用$group聚合阶段即可实现需求,查询语句如下:

db.你的集合名.aggregate([
  {
    $group: {
      _id: "$category",
      // 取当前分类分组下任意一张图片,$first取分组第一条的image值,也可替换为$last
      image: { $first: "$image" }
    }
  },
  {
    // 调整输出字段符合你的要求
    $project: {
      _id: 0,
      category: "$_id",
      image: 1
    }
  }
])

说明:如果需要每个分类随机返回一张图片,可以在$group阶段前增加{ $sample: { size: 总数据量 } }打乱数据顺序即可,适合数据量不大的场景。

方法2:小数据集简易实现

如果你的集合数据量很小,也可以分两步查询实现:

// 第一步:查询所有不重复的分类
const categoryList = await db.你的集合名.distinct('category')
// 第二步:遍历分类逐个查询对应图片
const result = await Promise.all(
  categoryList.map(async (cate) => {
    const record = await db.你的集合名.findOne({ category: cate }, { projection: { image: 1, _id: 0 } })
    return { category: cate, image: record.image }
  })
)

注意:该方法需要多次查询数据库,数据量大时性能很差,优先选择聚合方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:27:02