在一个聚合查询中同时使用
测试数据:
$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的特性还是我的误解?可能是因为Mongo首先应用分组,然后无法按缺失字段进行排序。这可能是mongoose
禁止在排序时使用distinct的原因。
db.test.aggregate([ { $group:{"_id":"$category"} },{ $sort : {ts: 1} } ]);
- Neo-coder