Behalten in MongoDB gespeicherte Arrays ihre Reihenfolge bei?

71

Einfache Frage: Behalten Arrays ihre Reihenfolge bei, wenn sie in MongoDB gespeichert werden?

Noah McIlraith
quelle

Antworten:

74

yep MongoDB behält die Reihenfolge des Arrays bei .. genau wie Javascript-Engines ..

dmb
quelle
Genau wie jede einzelne Sprache, an die ich denken kann;). Was nicht direkt damit zusammenhängt, wie eine Datenbank Daten speichern würde.
Remon van Vliet
:) - Eigentlich ist es nicht so, wie Mongodb die Daten speichert - es ist so, wie es analysiert wird. Mongodb verwendet die Javacript-Engine, daher kann man davon ausgehen, dass sie denselben Datentyp haben
dmb
9
Nein, deshalb ist es nicht so wie es ist. JavaScript wird in keinem Teil der MongoDB-Speicher-Engine verwendet. Arrays bleiben genau deshalb geordnet, weil sie von MongoDB so gespeichert werden. Die Array-Reihenfolge ist Teil der Abfragespezifikation, und Treiber, JavaScript oder andere, folgen dieser Spezifikation und präsentieren die Daten so, wie sie in der Datenbank vorhanden sind.
Remon van Vliet
13
Auch hier verwendet die Speicher-Engine kein JavaScript. Offensichtlich gibt es in MongoDB eine JS-Engine für m / r, serverseitige Skriptausführung und andere Funktionen, die auf JavaScript basieren. Die Tatsache, dass MongoDB Arrays geordnet hält, ist auf die BSON / JSON-Spezifikation zurückzuführen, nicht darauf, dass eine JS-Engine in einem völlig unabhängigen Teil der Datenbank verwendet wird.
Remon van Vliet
@RemonvanVliet Werden Sie einen Link zu Code oder Dokumentation bereitstellen, der bestätigt, dass die Arrays in Ordnung sind?
Adam Monsen
2

Mir ist klar, dass dies eine alte Frage ist, aber die Mongo-Dokumente geben jetzt an, dass alle Dokumenteigenschaften beim Einfügen ihre Reihenfolge beibehalten . Dies gilt natürlich auch für Arrays.

Dokumentfeldreihenfolge

MongoDB behält die Reihenfolge der Dokumentfelder nach Schreibvorgängen bei, mit Ausnahme der folgenden Fälle:

  • Das Feld _id ist immer das erste Feld im Dokument.
  • Aktualisierungen, die das Umbenennen von Feldnamen umfassen, können zur Neuordnung von Feldern im Dokument führen.

In Version 2.6 geändert : Ab Version 2.6 versucht MongoDB aktiv, die Feldreihenfolge in einem Dokument beizubehalten. Vor Version 2.6 hat MongoDB die Reihenfolge der Felder in einem Dokument nicht aktiv beibehalten.

Tom Spencer
quelle
5
Als alte Frage lesen Sie sie bitte besser, sie sagt nichts über die Reihenfolge der Dokumentfelder aus. Ein Objekt ist kein Array in Javascript und Arrays haben (normalerweise) keine Felder.
Francisco Presencia
-1

Ja, Array ist von Natur aus eine Datenstruktur, in der jedes Element seine durch einen Index angegebene Position hält. Andernfalls haben Indizes keine Bedeutung.

https://en.wikipedia.org/wiki/Array_data_structure

bescheidener Wolf
quelle