Как мне сгладить результаты агрегации? - PullRequest
0 голосов
/ 02 мая 2018

У меня следующий запрос ...

db.getCollection('apprenticeships')
.aggregate([
    {
        $match: { 
            'Vacancy._id': { $in: [1, 2, 3] },
        }
    },
    {
        $group: { 
            '_id': {
                'VacancyId': '$Vacancy._id',
                'Status': '$Status'
            },
            'Count': { $sum: 1 }
        }
    },
    {
        $sort: {
            '_id.VacancyId': 1,
            '_id.Status': 1
        }
    }
])

Что дает результаты, когда каждый элемент имеет следующую структуру

{
    "_id" : {
        "VacancyId" : 1,
        "Status" : 90
    },
    "Count" : 40.0
}

Как я могу переназначить эту структуру так, чтобы элементы в выводе выглядели так?

{
  "VacancyId": 1,
  "Status": 90,
  "Count": 40
}

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете добавить $project этап к конвейеру агрегации, чтобы добавить новые поля VacancyId и status, а затем скрыть _id

db.getCollection('apprenticeships')
    .aggregate([{
            $match: {
                'Vacancy._id': {
                    $in: [1, 2, 3]
                },
            }
        },
        {
            $group: {
                '_id': {
                    'VacancyId': '$Vacancy._id',
                    'Status': '$Status'
                },
                'Count': {
                    $sum: 1
                }
            }
        },
        {
            $sort: {
                '_id.VacancyId': 1,
                '_id.Status': 1
            }
        },
        {
             
            {
                $project:{ 'VacancyId': '$_id.VacancyId', 'Status': '$_id.Status', 'Count': '$Count', '_id': 0 }
            }
        }
    ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...