我想根据几个键订购一个集合。 E.g:
db.collection.find().sort( { age: -1, score: 1 } );
这一切都很好,花花公子。但是,我想保证年龄优先,接下来得分。
在Javascript中,object keys are listed is not guaranteed。
的顺序对sort in the official MongoDb documentation的解释并不完全清楚。
所以...是我在参数的顺序方面表现出真正可靠的方式吗?
Merc的。
答案 0 :(得分:3)
您使用的语法仅在JavaScript实现保留对象中键的顺序时才有效。大多数时候,大多数人都会这样做,但这取决于你确定。
对于Nodejs官方驱动程序,有一个替代形式适用于Array
:
db.collection.find().sort([[age, -1], [score, 1]]);
其他语言的驱动程序可能有类似的东西。
答案 1 :(得分:0)
aggregation documentation实际上提供了有关该主题的更多信息,其中声明:
db.users.aggregate(
{ $sort : { age : -1, posts: 1 } }
);
此操作对用户集合中的文档进行排序 根据年龄字段的降序和然后按升序排列 根据posts字段中的值
订购
这表明.sort()方法以相同的方式运行。