MongoDB中存储的数组是否保持顺序?


Answers:


74

是的MongoDB保持数组的顺序..就像Javascript引擎一样。


就像我能想到的每一种语言一样;)。请注意,这与数据库如何存储数据没有直接关系。
Remon van Vliet 2012年

:)-实际上,这不是mongodb存储数据的方式-它是如何解析的。.mongodb使用Javacript引擎,因此可以安全地假设它们具有相同的数据类型
dmb 2012年

9
不,这不是为什么会这样。MongoDB存储引擎的任何部分均未使用JavaScript。数组仍然保持有序排列,因为MongoDB就是这样存储数组的。数组排序是查询规范和驱动程序(JavaScript或其他)的一部分,请遵循该规范并提供数据库中存在的数据。
Remon van Vliet'2

13
同样,存储引擎不使用JavaScript。显然,MongoDB中存在一个JS引擎,用于m / r,服务器端脚本执行以及其他基于JavaScript构建的功能。MongoDB保持数组有序的事实是由于BSON / JSON规范,而不是因为它在数据库的完全不相关的部分中使用了JS引擎。
Remon van Vliet 2012年

@RemonvanVliet您是否将提供指向代码或文档的链接,以确认数组保持顺序?
亚当·蒙森


2

我意识到这是一个古老的问题,但是Mongo文档现在确实指定了所有文档属性在插入时保持其顺序。这自然也扩展到了数组。

文件现场订单

除以下情况外,MongoDB会在执行写操作后保留文档字段的顺序:

  • _id字段始终是文档中的第一个字段。
  • 包括重命名字段名称的更新可能导致文档中字段的重新排序。

在2.6版中进行了更改:从2.6开始,MongoDB积极尝试保留文档中的字段顺序。在2.6版之前,MongoDB并未主动保留文档中字段的顺序。


5
作为一个老问题,请更好地阅读它,它没有说明文档字段的顺序。对象不是javascript中的数组,并且数组没有字段(通常)。
Francisco Presencia,2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.