javascript - MongoDB 多重排序属性 : How is precedence determined?

标签 javascript mongodb ecmascript-5

根据 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/

相关文章:

javascript - 在 templateURL 中找不到 Angular 4 图像,但在模板字符串中有效

javascript - 避免向自定义对象添加方法和属性

javascript - JavaScript 中的 "read/write variable"是什么意思?

javascript - 标签中的 `language=JavaScript1.1` 有多旧?

javascript - 如何避免使用 Express 在 Node.js 中重新发送刷新数据

mongodb - 如何查询在 $external 数据库中创建的用户

c# - 使用 MongoDB C# 驱动程序 2.2 对嵌套字段进行强类型查询

node.js - Mongodb图集未连接

javascript - 从性能 Angular 来看函数声明与表达式?

javascript - OL3 : Zoom to vector layer on map