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

Mongoose查询如何仅返回相同title记录中的任意一条

Mongoose 按title字段去重查询实现方案

要实现相同title仅返回任意一条记录的需求,可直接使用Mongoose的aggregate聚合管道完成,核心逻辑是通过$group分组阶段按title字段去重,再提取单条记录的字段即可。

完整查询示例

// 将下方YourModel替换为你自己实际使用的集合模型
YourModel.aggregate([
  // 按title分组,每组取第一条完整记录存入doc字段,也可替换为$last取每组最后一条
  {
    $group: {
      _id: "$title",
      doc: { $first: "$$ROOT" }
    }
  },
  // 将doc字段的内容提升为根级返回结果,无需手动拆解字段
  {
    $replaceRoot: { newRoot: "$doc" }
  },
  // 可选阶段:按需对最终返回结果排序,示例为按创建时间倒序
  {
    $sort: { createdAt: -1 }
  }
])
.then(res => console.log(res))
.catch(err => console.error(err))

自定义返回字段方案

如果你不需要返回整条记录,只需要指定的几个字段,可以修改$group阶段的配置,无需使用$$ROOT:

{
  $group: {
    _id: "$title",
    recordId: { $first: "$_id" },
    content: { $first: "$content" },
    createTime: { $first: "$createdAt" }
  }
}

如果需要优先返回同组内符合特定规则的记录,比如最新创建的,可以在$group阶段前增加$sort阶段,先按创建时间倒序排列,再用$first即可拿到每组最新的记录。

内容的提问来源于stack exchange,提问作者Oğuzhan KAYA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:06:04