Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

273
Visualizações
¿Cómo se mantiene el orden de las propiedades para ordenar en mongodb?

Según la respuesta a la pregunta , el orden de las propiedades de un objeto no está garantizado. Entonces, ¿cómo funciona perfectamente la función de clasificación en MongoDB cuando pasamos varios campos de clasificación como un objeto?

 db.users.find({}).sort({firstName: 1, age:-1}).exec(callback);

¿Cómo sabe mongodb que primero tiene que ordenar por nombre y luego por edad? ¿Está trabajando en una suposición incorrecta?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esta es una pregunta interesante.

Funciona ya que la mayoría de las implementaciones de ECMAScript realmente conservan el orden de las claves (por ejemplo, V8 que utiliza Node). Sin embargo, el controlador oficial de Node MongoDB no fomenta su uso, sino que ofrece dos notaciones diferentes:

La clasificación se puede lograr con la opción de clasificación de parámetros que toma una variedad de preferencias de clasificación

 { "sort": [['field1','asc'], ['field2','desc']] }

Con un solo campo ascendente, la matriz se puede reemplazar con el nombre del campo.

 { "sort": "name" }

La documentación de Mongoose no menciona nada sobre el orden de las claves (al menos no que yo sepa). Pero también ofrece dos enfoques diferentes para clasificar :

 // sort by "field" ascending and "test" descending query.sort({ field: 'asc', test: -1 }); // equivalent query.sort('field -test');

De hecho, parece que la funcionalidad de clasificación de Mongoose se basó en una suposición incorrecta (pero actualmente válida). Probablemente sea mejor si usa la notación de cadena al ordenar con varias claves. Ordenar con la notación de objetos funciona correctamente cuando se usa MongoDB directamente (por ejemplo, en el shell de MongoDB) ya que no usa JSON puro sino JSON extendido .

También vea esta pregunta muy relacionada: ¿Cómo puede especificar el orden de las propiedades en un objeto javascript para un índice MongoDB en node.js?


También hay un problema de Mongoose sobre esto:

Sí, ese es un dilema desafortunado tanto para la mangosta como para el controlador mongodb. ECMAScript dice que las claves no están ordenadas, pero en realidad están ordenadas en V8 (excepto las teclas numéricas, que es un caso extremo desagradable), y probablemente seguirán ordenándose en V8 en el futuro previsible. Puede usar la sintaxis [['field1', 'asc']] o la sintaxis específica de mongoose 'field1 -field2' o la clase Map ES2015 (que garantiza el orden de inserción de las claves) si le preocupa el orden de las claves.

Entonces, cuando use Mongoose, use la notación de cadena o el soporte recientemente agregado para ES2015 Maps que se garantiza que se ordenarán por orden de inserción.

over 4 years ago · Santiago Trujillo Relatório

0

En su ejemplo, utiliza índices para operaciones de ordenación en MongoDB y si ordena con varios campos, crea un índice compuesto para admitir la ordenación en varios campos. Como hizo cuando proporcionó índices, el planificador de consultas obtiene el orden de clasificación de sus índices (el orden de su ejemplo: nombre, apellido) y ordenará según su orden. En el otro ejemplo es un objeto javascript. Javascript no garantiza la clasificación.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda