根据 Mongo 的文档,您可以像这样指定多个排序键:
{ $sort : { age : -1, posts: 1 } }
他们说会先按年龄(降序)排序,然后按帖子(升序)排序。
但是排序查询是一个 Javascript 对象。据我所知,尽管实现通常按照属性的创建顺序迭代属性,但这实际上并不是 ECMAScript 规范的一部分:对象属性正式没有顺序。
MongoDB 是否真的依赖于可能因实现而异的任意行为,我对 ECMAScript 规范的理解是错误的,还是我在 Mongo 文档中遗漏了一些可以让您以其他方式调整优先级的内容?
最佳答案
控制台很特殊,它的对象实际上是有序的,这与普通的 EMCAscript 不同,所以这可能会发生。
这是一个来自 10gen 员工的链接问题,其中指出:https://stackoverflow.com/a/18514551/383478
Among other things, order of fields is always preserved.
N.B:值得注意的是,V8(从 v2.2 开始运行 MongoDB shell 和 MR)实际上已经对对象进行了排序。
在非 V8 JS 中保持顺序的唯一正确方法是进行键查找,例如:How to keep an Javascript object/array ordered while also maintaining key lookups?
关于javascript - MongoDB 多重排序属性 : How is precedence determined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25589512/