【发布时间】:2015-05-30 11:58:34
【问题描述】:
在一个聚合查询中使用 $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那么它可以正常工作db.test.aggregate([ { $group:{"_id":"$category"} },{ $sort : {ts: 1} } ]);
标签: mongodb sorting mongoose mongodb-query aggregation-framework