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

MongoDB聚合管道如何查询数组不含指定元素的文档并按字段分组(Mongoose场景)

解决方案

你可以使用如下聚合管道实现需求,分为筛选、分组两个核心阶段:

// 替换为你要查询的目标用户名
const targetUser = "your_target_username";

const aggregationResult = await TestModel.aggregate([
  // 第一阶段:筛选所有seenByUser数组不包含目标用户名的文档
  {
    $match: {
      seenByUser: { $ne: targetUser }
    }
  },
  // 第二阶段:按medicationStage字段分组
  {
    $group: {
      _id: "$medicationStage",
      // 以下分组返回字段可根据实际需求调整
      total: { $sum: 1 }, // 统计当前分组下的文档数量
      list: { $push: "$$ROOT" } // 保留当前分组下所有原始文档内容,不需要可删除
    }
  }
]);

说明

  • 如果你更习惯使用$nin语法,$match阶段也可以写成如下形式,效果完全一致:
    $match: {
      seenByUser: { $nin: [targetUser] }
    }
    
  • 如果你不需要保留分组内的原始文档,删除$group阶段的list字段配置即可。
  • 如果需要对分组结果排序,可以在管道最后追加$sort阶段,例如按medicationStage正序排序:
    { $sort: { _id: 1 } }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:15:02