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

MongoDB查询调整:获取未删除对象的‘活跃’计数

调整MongoDB聚合查询以统计未删除对象的活跃计数

要实现类似RDS中where deleted is null的过滤效果,同时修正原查询的分组语法错误,你需要对聚合管道做以下调整:

  1. 在$match阶段添加未删除过滤条件:
    新增对deleted字段的匹配,只保留该字段为null(或不存在该字段)的文档,确保统计的都是未被删除的对象。

  2. 修正$group阶段的分组键:
    MongoDB的$group阶段必须使用_id作为分组键,且引用字段时需要加$前缀,原查询中的"id" : "field.type"写法错误,会导致分组不符合预期。

修改后的完整查询如下:

db.getCollection("events").aggregate(
    [
        {
            "$match": {
                "caseid": "0gke34",
                "field.type": { "$ne": null },
                // 过滤未被删除的文档:deleted为null或字段不存在
                "$or": [
                    { "deleted": null },
                    { "deleted": { "$exists": false } }
                ]
            }
        }, 
        {
            "$group": {
                "_id": "$field.type", // 正确的分组键写法
                "TotalCount": { $sum: 1 }
            }
        }
    ]
)

补充说明:

  • 如果你的业务中,删除操作只会将deleted字段设为null(不会出现字段不存在的情况),可以简化过滤条件为"deleted": null,即:
    "$match": {
        "caseid": "0gke34",
        "field.type": { "$ne": null },
        "deleted": null
    }
    
  • 修正后的_id: "$field.type"会按照field.type字段的值进行分组,从而得到每种类型的正确计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:41