Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Query Modifiers

$orderby

$orderby

Nota

Obsoleto desde la v3.2

A partir de la v3.2, el operador $orderby está obsoleto en mongosh. En mongosh, utiliza cursor.sort() en su lugar.

El operador $orderby ordena los resultados de una query en orden ascendente o descendente.

mongosh proporciona el método cursor.sort():

db.collection.find().sort( { age: -1 } )

También puedes especificar la opción en cualquiera de las formas siguientes:

db.collection.find()._addSpecial( "$orderby", { age : -1 } )
db.collection.find( { $query: {}, $orderby: { age : -1 } } )

Estos ejemplos devuelven todos los documentos de la colección llamada collection ordenados por el campo age en orden descendente. Especifica un valor para $orderby de menos uno (por ejemplo, -1, como se indica arriba) para ordenar en orden descendente o un valor positivo (por ejemplo, 1) para ordenar en orden ascendente.

Dado que los índices contienen registros ordenados, MongoDB puede obtener los resultados de una ordenación desde un índice que incluya los campos de ordenación. MongoDB puede utilizar varios índices para respaldar una operación de ordenamiento si el ordenamiento utiliza los mismos índices que el predicado de la query.

Si MongoDB no puede utilizar un índice o índices para obtener el orden de clasificación, MongoDB debe realizar una operación de ordenamiento bloqueante en los datos. Un ordenamiento bloqueante indica que MongoDB debe consumir y procesar todos los documentos de entrada para el ordenamiento antes de devolver los resultados. Los ordenamientos bloqueantes no bloquean operaciones concurrentes en la colección o la base de datos.

Las operaciones de ordenamiento que utilizan un índice a menudo tienen mejor rendimiento que los ordenamientos bloqueantes. Para obtener más información sobre cómo crear índices para soportar operaciones de ordenación, consulta Uso de índices para ordenar resultados de queries.

Si MongoDB requiere utilizar más de 100 megabytes de memoria del sistema para la operación de ordenamiento bloqueante, MongoDB devuelve un error a menos que la query especifique cursor.allowDiskUse() (Novedad en MongoDB 4.4). allowDiskUse() permite que MongoDB use archivos temporales en disco para almacenar datos que superen el límite de 100 megabytes de memoria del sistema al procesar una operación de ordenamiento bloqueante.

Para evitar este error, crea un índice para soportar la operación de ordenamiento o utiliza $orderby en conjunto con cursor.maxTimeMS() y/o cursor.limit(). La cursor.limit() aumenta la velocidad y reduce la cantidad de memoria necesaria para devolver esta query mediante un algoritmo optimizado. El límite especificado debe resultar en un número de documentos que estén dentro del límite de 100 megabytes.

Volver

$min

En esta página