Esta é uma pergunta interessante.
Funciona como a maioria das implementações ECMAScript realmente faz preservar a ordem das chaves (por exemplo, V8 que é usado pelo Node). No entanto, o driver Node MongoDB oficial não incentiva seu uso, mas oferece duas notações diferentes:
A documentação do Mongoose não menciona nada sobre a ordem das chaves (pelo menos não que eu saiba). Mas também oferece duas abordagens diferentes para classificação :
De fato, parece que a funcionalidade de classificação do Mongoose foi baseada em uma suposição errada (mas atualmente válida). Provavelmente é melhor se você usar a notação de string ao classificar com várias chaves. A classificação com a notação de objeto funciona corretamente ao usar o MongoDB diretamente (por exemplo, no shell do MongoDB), pois não usa JSON puro, mas JSON estendido .
Veja também esta pergunta muito relacionada:Como você pode especificar a ordem das propriedades em um objeto javascript para um índice MongoDB em node.js?
Há também um problema do Mongoose sobre isso:
Portanto, ao usar o Mongoose, use a notação de string ou o suporte recém-adicionado para Mapas ES2015 que são garantidos para serem encomendados por ordem de inserção.