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

MongoDB带条件的aggregate分组查询如何过滤不符合规则的key

可以实现,你现有查询的问题出在第一步就过滤掉了percent≥95的文档,导致分组统计时无法识别某个key是否曾经出现过符合排除规则的数值。

调整思路

  • 先保留所有对应用户ID的文档,不提前过滤percent数值
  • 按key分组时,同时计算两个指标:该key下的percent最大值、该key是否存在≥95的percent记录
  • 过滤掉存在≥95记录的key
  • 最后格式化输出字段即可

调整后的查询语句

db.test.aggregate([
    // 先过滤对应用户的所有文档,不提前筛percent
    {
        "$match": {
            "user_id": user_id
        }
    },
    // 按key分组,统计所需指标
    {
        "$group": {
            "_id": "$key",
            "max_percent": {"$max": "$percent"},
            // 标记是否存在>=95的percent记录
            "has_high_value": {"$max": {"$gte": ["$percent", 95]}}
        }
    },
    // 过滤掉存在高值的key
    {
        "$match": {
            "has_high_value": false
        }
    },
    // 格式化输出字段
    {
        "$project": {
            "_id": 0,
            "key": "$_id",
            "percent": "$max_percent"
        }
    }
])

运行结果

执行上述语句后即可得到预期输出:

{"key": "key2", "percent": 50}
{"key": "key3", "percent": 70}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:21:01