считать и считать уникальным в одном агрегированном запросе Монго - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть агрегатный запрос Монго, который вычисляет количество различных ключей COUNT, MIN, MAX и BLANK.

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 элементов вместе сЭто.Единственный способ сделать это - сгруппировать поля, но группировка повлияет на результаты MIN, MAX или COUNT

.

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете использовать $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
                    ]
                }
            }
}])
...