Dette er et interessant spørgsmål.
Det fungerer som de fleste ECMAScript-implementeringer faktisk gør bevare nøglerækkefølgen (f.eks. V8, som bruges af Node). Den officielle Node MongoDB-driver tilskynder ikke til dets brug, i stedet tilbyder det to forskellige notationer:
Mongoose-dokumentationen nævner ikke noget om nøglerækkefølge (i hvert fald ikke, hvad jeg kender til). Men det tilbyder også to forskellige tilgange til sortering :
Det ser faktisk ud til, at Mongoose-sorteringsfunktionaliteten var baseret på en forkert (men i øjeblikket gyldig) antagelse. Det er nok bedst, hvis du bruger strengnotationen, når du sorterer med flere nøgler.Sortering med objektnotationen fungerer korrekt, når du bruger MongoDB direkte (f.eks. i MongoDB-skallen), da den ikke bruger ren JSON, men udvidet JSON .
Se også dette meget relaterede spørgsmål:Hvordan kan du angive rækkefølgen af egenskaber i et javascript-objekt for et MongoDB-indeks i node.js?
Der er også et Mongoose-problem om dette:
Så når du bruger Mongoose, skal du enten bruge strengnotationen eller den nyligt tilføjede understøttelse af ES2015 Maps som med garanti bestilles ved indstiksordre.