在MongoDB中按几个键排序

时间:2013-07-10 12:06:28

标签: javascript mongodb

我想根据几个键订购一个集合。 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的。

2 个答案:

答案 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()方法以相同的方式运行。