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

MongoDB按条件查询分组最多N条记录,fruit分类返回全部匹配数据

MongoDB单条查询实现分类差异化返回解决方案

实现思路

使用聚合管道的$facet运算符并行处理不同分类的查询逻辑,分别适配fruit分类的全量返回规则和其他分类的分组限流规则,最后直接输出要求的嵌套格式,无需额外二次处理。

完整查询代码

db.collection.aggregate([
  // 预过滤指定分类,降低后续计算开销
  {
    $match: {
      category: { $in: ["fruit", "fresh-food", "vegetable"] }
    }
  },
  // 分通道处理不同分类的差异化规则
  {
    $facet: {
      // fruit分类直接返回所有匹配记录
      "fruit": [
        { $match: { category: "fruit" } }
      ],
      // fresh-food分类按用户分组,每组最多返回10条
      "fresh-food": [
        { $match: { category: "fresh-food" } },
        {
          $group: {
            _id: "$userId",
            data: { $push: "$$ROOT" }
          }
        },
        {
          $project: {
            _id: 0,
            userId: "$_id",
            data: { $slice: ["$data", 10] }
          }
        }
      ],
      // vegetable分类按用户分组,每组最多返回10条
      "vegetable": [
        { $match: { category: "vegetable" } },
        {
          $group: {
            _id: "$userId",
            data: { $push: "$$ROOT" }
          }
        },
        {
          $project: {
            _id: 0,
            userId: "$_id",
            data: { $slice: ["$data", 10] }
          }
        }
      ]
    }
  }
])

逻辑说明

  • 所有分类硬编码在查询中,符合需求要求
  • 如需调整非fruit分类的单用户返回条数,直接修改$slice的第二个参数即可
  • 输出结构完全匹配要求的返回格式,无需额外代码处理结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:33:00