在单个mongo聚合查询中计数并计数唯一性

时间:2018-12-26 07:16:57

标签: mongodb mongodb-query aggregation-framework

我有一个mongo聚合查询,该查询计算COUNTMINMAXBLANK个不同密钥的计数。

db.getCollection('ReportTestProcess').aggregate([
   $group": {
                "_id":0,
                "Inititated_on_MIN": {
                    "$min": "$Inititated_on.v"
                },
                "Inititated_on_MAX": {
                    "$max": "$Inititated_on.v"
                },
                "Text_COUNT":{$sum:1},
                "Text_BLANK": {
                    "$sum": {
                        "$cond": [
                            {
                                "$ifNull": [
                                    "$Inititated_on.v",
                                    false
                                ]
                            },
                            0,
                            1
                        ]
                    }
                }
}])

现在,我需要UNIQUE_COUNT个元素。我想到的唯一方法是对字段进行分组,但是分组会影响MINMAXCOUNT

的结果

1 个答案:

答案 0 :(得分:1)

您可以使用$addToSet

集合始终保留唯一值。您的代码应如下所示。

db.getCollection('ReportTestProcess').aggregate([
   $group": {
            "Inititated_on_MIN": {
                "$min": "$Inititated_on.v"
            },
            "Inititated_on_MAX": {
                "$max": "$Inititated_on.v"
            },
            "Text_COUNT":{$sum:1},
            "Text_UNIQUE": { $addToSet: "$Inititated_on.v" }
            "Text_BLANK": {
                "$sum": {
                    "$cond": [
                        {
                            "$ifNull": [
                                "$Inititated_on.v",
                                false
                            ]
                        },
                        0,
                        1
                    ]
                }
            }
}])