gpt4 book ai didi

mongodb - 在一个 MongoDB 聚合查询中进行排序和分组

转载 作者:可可西里 更新时间:2023-11-01 10:03:51 29 4
gpt4 key购买 nike

在一个行为异常的聚合查询中使用 $sort$group

测试数据:

db.createCollection("test");

db.test.insert({
ts : 100,
category : 1
});

db.test.insert({
ts : 80,
category : 1
});

db.test.insert({
ts : 60,
category : 2
});

db.test.insert({
ts : 40,
category : 3
});

因此,当按 ts 排序时,一切看起来都不错,但是当我同时使用 $sort$group 时,结果顺序错误.查询:

db.test.aggregate([
{
$sort : {ts: 1}
},
{
$group:{"_id":"$category"}
}
]);

结果倒序:

{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 3 }

是Mongo的特性还是我的误会? Maby mongo 首先应用分组,然后不能按缺席字段排序。由于这个原因,mongoose 可能禁止在排序时使用 distinct。

最佳答案

您需要先对$group$sort 结果进行排序。由于您只需要 _id 字段,因此您将需要 $project 阶段。

db.test.aggregate(
[
{ "$group": { "_id": "$category" }},
{ "$sort" : { "ts": 1 }},
{ "$project": { "_id": 1 }}
]
);

关于mongodb - 在一个 MongoDB 聚合查询中进行排序和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278962/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com