Dit is een interessante vraag.
Het werkt zoals de meeste ECMAScript-implementaties doen behoud de sleutelvolgorde (bijv. V8 die wordt gebruikt door Node). De officiële Node MongoDB-stuurprogramma moedigt het gebruik ervan niet aan, maar biedt twee verschillende notaties:
De Mongoose-documentatie vermeldt niets over de volgorde van de sleutels (althans niet dat ik weet). Maar het biedt ook twee verschillende benaderingen voor sorteren :
Het lijkt er inderdaad op dat de Mongoose-sorteerfunctionaliteit gebaseerd was op een verkeerde (maar momenteel geldige) veronderstelling. Het is waarschijnlijk het beste als u de tekenreeksnotatie gebruikt bij het sorteren met meerdere sleutels. Sorteren met de objectnotatie werkt correct wanneer MongoDB rechtstreeks wordt gebruikt (bijvoorbeeld in de MongoDB-shell) omdat het geen pure JSON gebruikt, maar uitgebreide JSON .
Zie ook deze zeer gerelateerde vraag:Hoe kun je de volgorde van eigenschappen in een javascript-object voor een MongoDB-index in node.js specificeren?
Er is ook een Mongoose-probleem hierover:
Dus als je Mongoose gebruikt, gebruik dan ofwel de tekenreeksnotatie of de nieuw toegevoegde ondersteuning voor ES2015-kaarten die gegarandeerd worden besteld via een invoegopdracht.