如何展平聚合的结果?

时间:2018-05-02 14:37:45

标签: mongodb

我有以下查询...

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 :(得分:1)

您可以将$project阶段添加到汇总管道,以添加新字段VacancyIdstatus,然后隐藏_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 }
            }
        }
    ])