Das ist eine interessante Frage.
Es funktioniert wie die meisten ECMAScript-Implementierungen tatsächlich tun Behalten Sie die Schlüsselreihenfolge bei (z. B. V8, das von Node verwendet wird). Der offizielle Node MongoDB-Treiber ermutigt nicht zur Verwendung, sondern bietet stattdessen zwei verschiedene Notationen an:
Die Mongoose-Dokumentation erwähnt nichts bezüglich der Schlüsselreihenfolge (zumindest nicht, dass ich davon wüsste). Aber es bietet auch zwei verschiedene Ansätze zum Sortieren :
Tatsächlich scheint die Sortierfunktion von Mongoose auf einer falschen (aber derzeit gültigen) Annahme zu beruhen. Es ist wahrscheinlich am besten, wenn Sie beim Sortieren mit mehreren Schlüsseln die Zeichenfolgennotation verwenden. Das Sortieren mit der Objektnotation funktioniert ordnungsgemäß, wenn Sie MongoDB direkt verwenden (z. B. in der MongoDB-Shell), da es kein reines JSON verwendet, sondern erweitertes JSON .
Siehe auch diese sehr verwandte Frage:Wie können Sie die Reihenfolge der Eigenschaften in einem Javascript-Objekt für einen MongoDB-Index in node.js angeben?
Es gibt auch ein Mongoose-Problem dazu:
Wenn Sie also Mongoose verwenden, verwenden Sie entweder die Zeichenfolgennotation oder die neu hinzugefügte Unterstützung für ES2015-Karten die garantiert per Insertion Order bestellt werden.