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

89

简单的问题,数组在存储在MongoDB中时是否保留其顺序?

3个回答

93

是的,MongoDB会保留数组的顺序,就像JavaScript引擎一样。


就像我所知道的每一种语言一样,实际上 ;). 这与数据库如何存储数据并没有直接关系。 - Remon van Vliet
:) 实际上 MongoDB 存储数据的方式不是这样,它是如何解析数据的。MongoDB 使用 JavaScript 引擎,因此可以安全地假设它们具有相同的数据类型。 - dmb
12
不,这不是JavaScript被用于MongoDB存储引擎的原因。 MongoDB存储引擎中没有使用JavaScript。 数组之所以保持有序,是因为它们在MongoDB中以这种方式存储。 数组排序是查询规范和驱动程序的一部分,无论是JavaScript还是其他语言,都要遵循该规范并将数据呈现为存在于数据库中的样子。 - Remon van Vliet
15
再次强调,存储引擎 不使用 JavaScript。显然,MongoDB中有一个 JS 引擎用于 m/r、服务器端脚本执行和其他基于 JavaScript 构建的功能。MongoDB保持数组有序是由于 BSON/JSON 规范,并非因为它在数据库的完全无关部分使用了 JS 引擎。 - Remon van Vliet
@RemonvanVliet你能提供一个链接,证明数组是按顺序保留的代码或文档吗? - Adam Monsen
显示剩余5条评论

14

5
我明白这是一个古老的问题,但是Mongo文档现在指定所有文档属性在插入时保留它们的顺序。这自然也适用于数组。
文档字段顺序:MongoDB在写操作后保留文档字段的顺序,除了以下情况:
- _id字段始终是文档中的第一个字段。 - 包括重命名字段名称在内的更新可能导致文档中字段的重新排序。
版本2.6中的更改:从版本2.6开始,MongoDB主动尝试保留文档中的字段顺序。在2.6之前,MongoDB没有主动保留文档中字段的顺序。

7
作为一个老问题,请仔细阅读,它并没有说明文档字段的顺序。在JavaScript中,对象不是数组,而数组通常没有字段。 - Francisco Presencia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接