5

MongoDB的文档似乎建议,为了对aggregate调用结果进行排序,您应该指定一个字典/对象,如下所示:

db.users.aggregate(
    { $sort : { age : -1, posts: 1 } }
);

这应该按age然后按排序posts

如果我想按posts然后按排序怎么办age?更改键的顺序似乎没有效果,可能是因为这是 JS 对象的属性。换句话说,排序似乎总是根据键的词法顺序,作为一种设计选择,这似乎很奇怪......

我错过了什么吗?有没有办法指定排序的键列表?

4

1 回答 1

7

文档

由于python字典不维护您应该使用的顺序SONcollections.OrderedDict需要显式排序的地方,例如“$sort”

from bson.son import SON
db.users.aggregate([
    {"$sort": SON([("posts", 1), ("age", -1)])}
])
于 2013-04-07T16:17:56.710 回答