Rax*_*ter 4 sorting mongoose mongodb mongodb-query aggregation-framework
在一个聚合查询中使用$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
});
Run Code Online (Sandbox Code Playgroud)
因此,按ts所有排序看起来不错,但是当我同时使用两者时$sort,$group结果顺序错误。询问:
db.test.aggregate([
{
$sort : {ts: 1}
},
{
$group:{"_id":"$category"}
}
]);
Run Code Online (Sandbox Code Playgroud)
结果以相反的顺序:
{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 3 }
Run Code Online (Sandbox Code Playgroud)
是 Mongo 功能还是我的误解?Maby mongo 首先应用分组,然后无法按缺失字段排序。出于这个原因,可能mongoose禁止使用 distinct 进行排序。
你需要先$group和$sort结果。由于您只需要_id场地,因此您将需要$project舞台。
db.test.aggregate(
[
{ "$group": { "_id": "$category" }},
{ "$sort" : { "ts": 1 }},
{ "$project": { "_id": 1 }}
]
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3781 次 |
| 最近记录: |