对具有多个字段的 MongoDb 聚合进行排序

问题描述 投票:0回答:1

来自here的答案似乎是一样的,但我尝试过应用它,但它没有达到我希望的效果,所以显然我做错了。

我们有一个审计日志mongodb数据库集合,保存业务数据更改。我试图找到一个不同的服务和表名称列表,这些列表在 UI 上创建下拉列表的范围内,以直观地探索更改。这些字段已建立索引。

我的查询如下所示:

db.getCollection("changes")
.aggregate(
       {
            $group: {"_id": {ServiceName:"$ServiceName", TableName:"$TableName"} }
       },
       {
            $sort: { "ServiceName" : 1, "TableName" : 1 }
       },
);

这并没有“失败”,但是......排序似乎不起作用。记录以完全随机的顺序返回。就像排序过滤器被忽略一样。我尝试使用 .sort() 功能,但我被告知不支持。

我的查询有什么问题吗?我需要如何调整它以获得不同的服务和表列表,按服务名称排序,然后按表名称排序?

mongodb mongodb-query
1个回答
0
投票

db.changes.aggregate([ { $group: { _id: { ServiceName: "$ServiceName", TableName: "$TableName" } } }, { $sort: { "_id.ServiceName": 1, "_id.TableName": 1 } }, { $project: { ServiceName: "$_id.ServiceName", TableName: "$_id.TableName", _id: 0 } } ])

© www.soinside.com 2019 - 2024. All rights reserved.