mongodb中分组顶部的排序

mongodb中分组顶部的排序,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我的主题列表如下: [ { "name": "Algorithms", "category": "Computer Science" }, { "name": "Android Programming", "category": "Computer Science" }, { "name": "Polish", "category": "Foreign Languages" }, { "name": "Portuguese", "category": "Forei

我的
主题列表如下:

[
    { "name": "Algorithms", "category": "Computer Science" },
    { "name": "Android Programming", "category": "Computer Science" },
    { "name": "Polish", "category": "Foreign Languages" },
    { "name": "Portuguese", "category": "Foreign Languages" },
    { "name": "Quechua", "category": "Foreign Languages" },
    { "name": "Health and Medicine", "category": "Science" },
    { "name": "Inorganic Chemistry", "category": "Science" }
]
[
    {
        "_id": "Computer Science",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538ce",
                "name": "Algorithms"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538cf",
                "name": "Android Programming"
            }
        ],
        "count": 2
    },
    {
        "_id": "Foreign Languages",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538d0",
                "name": "Polish"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d1",
                "name": "Portuguese"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d2",
                "name": "Quechua"
            }
        ],
        "count": 3
    },
    {
        "_id": "Science",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538d3",
                "name": "Health and Medicine"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d4",
                "name": "Inorganic Chemistry"
            }
        ],
        "count": 2
    }
]
我试图根据以下类别对其进行分组:

[
    { "name": "Algorithms", "category": "Computer Science" },
    { "name": "Android Programming", "category": "Computer Science" },
    { "name": "Polish", "category": "Foreign Languages" },
    { "name": "Portuguese", "category": "Foreign Languages" },
    { "name": "Quechua", "category": "Foreign Languages" },
    { "name": "Health and Medicine", "category": "Science" },
    { "name": "Inorganic Chemistry", "category": "Science" }
]
[
    {
        "_id": "Computer Science",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538ce",
                "name": "Algorithms"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538cf",
                "name": "Android Programming"
            }
        ],
        "count": 2
    },
    {
        "_id": "Foreign Languages",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538d0",
                "name": "Polish"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d1",
                "name": "Portuguese"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d2",
                "name": "Quechua"
            }
        ],
        "count": 3
    },
    {
        "_id": "Science",
        "subjects": [
            {
                "id": "5d2dfd5e349a9a3a48e538d3",
                "name": "Health and Medicine"
            },
            {
                "id": "5d2dfd5e349a9a3a48e538d4",
                "name": "Inorganic Chemistry"
            }
        ],
        "count": 2
    }
]
我还希望对类别进行排序,并对每个类别中的主题进行排序

这就是我到目前为止所做的:

db.coll.aggregate(
            {
                $group: {
                    _id: "$category",
                    subjects: {
                        $push: {
                            id: "$_id",
                            name: "$name"
                        }
                    },
                    count: { $sum: 1 }
                }

            });
上述方法在按类别对主题进行分组方面效果良好。但我无法在分组的基础上进行排序。我想对类别以及每个类别中的主题进行排序。

在应用
$group
之前运行
$name
,然后在
$group
之后运行下一步
$sort
,按
\u id

db.col.aggregate([
    { $sort: { name: 1 } },
    {
        $group: {
            _id: "$category",
            subjects: {
                $push: {
                    id: "$_id",
                    name: "$name"
                }
            },
            count: { $sum: 1 }
        }
    },
    { $sort: { _id: 1 } }
]);

您需要在分组前后添加
$sort
阶段<代码>{$sort:{name:1}}
{$sort:{{u id:1}}