来自here的答案似乎是一样的,但我尝试过应用它,但它没有达到我希望的效果,所以显然我做错了。
我们有一个审计日志mongodb数据库集合,保存业务数据更改。我试图找到一个不同的服务和表名称列表,这些列表在 UI 上创建下拉列表的范围内,以直观地探索更改。这些字段已建立索引。
我的查询如下所示:
db.getCollection("changes")
.aggregate(
{
$group: {"_id": {ServiceName:"$ServiceName", TableName:"$TableName"} }
},
{
$sort: { "ServiceName" : 1, "TableName" : 1 }
},
);
这并没有“失败”,但是......排序似乎不起作用。记录以完全随机的顺序返回。就像排序过滤器被忽略一样。我尝试使用 .sort()
功能,但我被告知不支持。
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
}
}
])