Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$sort
La etapa de $sort agregación ordena los documentos en proceso en función de los valores de campo especificados. Los documentos se organizan en orden ascendente o descendente según los criterios de clasificación proporcionados.
Parámetros
-
field: el nombre del campo por el que se va a ordenar. -
order:1Utilícelo en orden ascendente o-1descendente.
Ejemplo (MongoDB Shell)
En el siguiente ejemplo se muestra cómo usar la $sort etapa para ordenar los productos por precio en orden descendente.
Cree documentos de muestra
db.products.insertMany([ { _id: 1, name: "Laptop", category: "Electronics", price: 1200 }, { _id: 2, name: "Mouse", category: "Electronics", price: 25 }, { _id: 3, name: "Desk", category: "Furniture", price: 350 }, { _id: 4, name: "Chair", category: "Furniture", price: 150 }, { _id: 5, name: "Monitor", category: "Electronics", price: 400 } ]);
Ejemplo de consulta
db.products.aggregate([ { $sort: { price: -1 } } ]);
Salida
[
{ _id: 1, name: 'Laptop', category: 'Electronics', price: 1200 },
{ _id: 5, name: 'Monitor', category: 'Electronics', price: 400 },
{ _id: 3, name: 'Desk', category: 'Furniture', price: 350 },
{ _id: 4, name: 'Chair', category: 'Furniture', price: 150 },
{ _id: 2, name: 'Mouse', category: 'Electronics', price: 25 }
]
Ejemplos de código
Para ver un ejemplo de código sobre el uso de la etapa de $sort agregación, elija la pestaña correspondiente al idioma que desea usar:
Ordenación incremental
La clasificación incremental es una optimización en la que Amazon DocumentDB utiliza un índice que ya ordena los campos principales de una clasificación de varios campos. A continuación, Amazon DocumentDB ordena solo los campos restantes de cada grupo de documentos que comparten los mismos valores iniciales. En lugar de ordenar todo el conjunto de resultados de la memoria en un bloque (una clasificación completa), Amazon DocumentDB lee los documentos en orden de índice. A continuación, realiza muchas clasificaciones pequeñas e independientes, una por grupo. Los resultados son idénticos a los de una clasificación completa. Solo cambian el plan de consulta y la cantidad de memoria y trabajo que utiliza.
Beneficios
La clasificación incremental ofrece las siguientes ventajas:
-
Menor uso de memoria y menos errores de clasificación basados en discos. Amazon DocumentDB solicita un grupo pequeño a la vez en lugar de todo el conjunto de resultados de una sola vez.
-
Resultados más rápidos con
limit. Amazon DocumentDB puede emitir documentos ordenados antes de leer toda la entrada. Una clasificación seguida de unalimit(por ejemplo, una consulta con la letra N superior o paginada) puede detenerse tan pronto como haya generado suficientes documentos.
Cuando Amazon DocumentDB elige una clasificación incremental
Por ejemplo, si se ordena por { customerId: 1, orderDate: -1 } y solo se indica por{ customerId: 1 }, el índice ya devuelve los documentos ordenados porcustomerId. Amazon DocumentDB solo necesita ordenar customerId por orderDate cada grupo de documentos que comparten el mismo nombre. El campo inicial ya ordenado (customerId) es la clave preordenada. En función de la clasificación que ya proporcione un índice, Amazon DocumentDB elige uno de los tres comportamientos siguientes:
-
El índice ordena cada clave de clasificación. No se necesita ningún tipo de clasificación. Amazon DocumentDB lee los documentos directamente en el orden solicitado.
-
El índice ordena el prefijo inicial de las claves de clasificación. Amazon DocumentDB utiliza una clasificación incremental, ordenando solo las claves finales de cada grupo preordenado.
-
Ningún índice ordena ninguna clave de clasificación inicial. Amazon DocumentDB realiza una clasificación completa de toda la entrada.
Requisitos y limitaciones
La clasificación incremental requiere Amazon DocumentDB 8.0.2 o una versión posterior, con la versión 3.0 del planificador de consultas predeterminado en Amazon DocumentDB 8.0.2. Para obtener más información sobre las versiones del planificador, consulte. Planificador de consultas v3
Amazon DocumentDB no puede usar un índice parcial o un índice de varias claves (matrices) para proporcionar el prefijo preordenado para una clasificación incremental. En esos casos, Amazon DocumentDB vuelve a un orden completo. Esto nunca afecta a la exactitud de los resultados.
Verificar una clasificación incremental con explain()
explain()Utilícelo para confirmar que una consulta utiliza una clasificación incremental. En el plan ganador, aparece una clasificación incremental como una SORT etapa que incluye una presortedKeys matriz que enumera los principales campos de clasificación que el índice ya ha ordenado. Una clasificación completa aparece como una SORT etapa sin una presortedKeys matriz. El presortedKeys campo es una DocumentDB-specific adición de Amazon al explain() resultado y no aparece en los planes explicativos de MongoDB.
db.orders.createIndex({ customerId: 1 }) db.orders.find({}).sort({ customerId: 1, orderDate: -1 }).explain()
{
"stage": "SORT",
"sortPattern": {
"customerId": 1,
"orderDate": -1
},
"presortedKeys": [
"customerId"
],
"inputStage": {
"stage": "IXSCAN",
"indexName": "customerId_1",
"direction": "forward"
}
}