$orderbyNota
Obsoleto desde la v3.2
A partir de la v3.2, el operador
$orderbyestá obsoleto enmongosh. Enmongosh, utilizacursor.sort()en su lugar.El operador
$orderbyordena los resultados de una query en orden ascendente o descendente.mongoshproporciona el métodocursor.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
collectionordenados por elagecampo en orden descendente. Especifique un valor de$orderbyo menos uno (p. ej.,, como se indicó-1anteriormente) para ordenar en orden descendente o un valor positivo (p. ej.,)1para ordenar en orden ascendente.
Comportamiento
Dado que los índices contienen registros ordenados, MongoDB puede obtener los resultados de una ordenación a partir de un índice que incluya los campos de ordenación. MongoDB puede usar múltiples índices para una ordenación si esta utiliza los mismos índices que el predicado de consulta.
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.