如何获取具有最高计数的n个数据集但返回按名称排序?
我尝试了以下操作,但这不起作用。
db.Foo
.find()
.sort({'count': -1})
.limit(n)
.sort({'name': 1}) // does not work
.exec(...);
除了手动排序返回的json数组外,还有其他解决方案吗?
如SQL中的子查询?
SELECT *
FROM
( SELECT *
FROM Foo
ORDER BY count DESC
LIMIT n
) AS tmp
ORDER BY name ASC ;
答案 0 :(得分:4)
每当查询包含多个这样的步骤时,通常就会出现aggregate
管道:
db.Foo.aggregate([
// Sort all the doc on count, descending
{$sort: {count: -1}},
// Take the first n of those
{$limit: n},
// Resort those n docs on name
{$sort: {name: 1}}
]).exec(...);
答案 1 :(得分:0)
您需要在一个类别中添加两个条件
db.Foo
.find()
.sort({'count': -1,'name': 1})
.limit(n)
.exec(...);