MongoDB Consulta Ordenar() y Limitar() con Ordenar por ejemplos

โšก Resumen inteligente

MongoDB Los modificadores de consulta Sort() y Limit() controlan cuรกntos documentos devuelve una consulta y en quรฉ orden. El mรฉtodo limit() limita el nรบmero de resultados, mientras que sort() ordena los documentos en orden ascendente o descendente utilizando valores de 1 o -1.

  • ๐Ÿ”ข Limitar resultados: El mรฉtodo limit() restringe la cantidad de documentos que devuelve una consulta; por ejemplo, limit(2) devuelve dos registros.
  • โฌ‡๏ธ Ordenar de forma descendente: sort({field:-1}) devuelve los documentos en orden descendente segรบn el campo elegido.
  • โฌ†๏ธ Ordenar ascendentemente: sort({field:1}) devuelve los documentos en orden ascendente, que tambiรฉn es la direcciรณn predeterminada.
  • โญ๏ธ Saltar para paginaciรณn: El mรฉtodo skip() ignora una serie de documentos y, combinado con limit(), crea la paginaciรณn.
  • ๐Ÿงท Mรบltiples claves: La funciรณn sort() acepta varios campos, ordenando por la primera clave y resolviendo los empates con la siguiente.
  • ๐Ÿ–จ๏ธ Readable Salida: Encadenar forEach(printjson) imprime cada documento devuelto en formato JSON limpio.

MongoDB Consulta de ordenaciรณn y limitaciรณn

ยฟQuรฉ son las modificaciones de consultas?

Mongo DB Proporciona modificadores de consulta como las clรกusulas 'limit' y 'Orders' para brindar mรกs flexibilidad al ejecutar consultas. Analizaremos los siguientes modificadores de consulta.

MongoDB Limitar resultados de consulta

Este modificador se utiliza para limitar la cantidad de documentos que se devuelven en el conjunto de resultados de una consulta. El siguiente ejemplo muestra cรณmo se puede hacer esto.

db.Employee.find().limit(2).forEach(printjson);

Code Explicaciรณn

  • El cรณdigo anterior toma la funciรณn de bรบsqueda que devuelve todos los documentos de la colecciรณn pero luego usa la clรกusula de lรญmite para limitar la cantidad de documentos que se devuelven a solo 2.

Resultado

Si el comando se ejecuta correctamente, se mostrarรก la siguiente salida

MongoDB Limitar resultados de consulta

El resultado muestra claramente que, dado que hay un modificador de lรญmite, como mรกximo solo se devuelven 2 registros como parte del conjunto de resultados basado en el ObjectId en orden ascendente.

MongoDB Ordenar por orden descendente

Se puede especificar el orden de los documentos que se devolverรกn en funciรณn del orden ascendente o descendente de cualquier clave de la colecciรณn. El siguiente ejemplo muestra cรณmo se puede hacer esto.

db.Employee.find().sort({Employeeid:-1}).forEach(printjson)

Code Explicaciรณn

  • El cรณdigo anterior toma la funciรณn de clasificaciรณn que devuelve todos los documentos de la colecciรณn pero luego usa el modificador para cambiar el orden en el que se devuelven los registros. Aquรญ el -1 indica que queremos devolver los documentos segรบn el orden descendente de la identificaciรณn del empleado.

Si el comando se ejecuta correctamente, se mostrarรก la siguiente salida

Resultado

MongoDB Ordenar por orden descendente

El resultado muestra claramente los documentos que se devuelven en orden descendente de Employeeid.

El orden ascendente estรก definido por el valor 1.

MongoDB Ordenar por orden ascendente

Asรญ como la funciรณn `sort()` puede devolver los documentos en orden descendente, tambiรฉn puede devolverlos en orden ascendente. El orden ascendente se define mediante el valor 1 en el objeto `sort`. Esto ordena los documentos del valor mรกs pequeรฑo al mรกs grande, lo cual es รบtil para listar los registros del mรกs antiguo al mรกs reciente o de la A a la Z.

El siguiente ejemplo ordena todos los documentos de empleados por Employeeid en orden ascendente:

db.Employee.find().sort({Employeeid:1}).forEach(printjson)

Asรญ es como funciona la consulta:

  • La funciรณn find() recupera todos los documentos de la colecciรณn Employee.
  • sort({Employeeid:1}) ordena los resultados por el campo Employeeid, desde el id mรกs bajo hasta el mรกs alto.
  • forEach(printjson) imprime cada documento en formato JSON legible.

Al ejecutar este comando, los documentos aparecen ordenados de menor a mayor segรบn el ID del empleado. El orden predeterminado es ascendente, por lo que dejar el valor en 1 garantiza un orden de menor a mayor en el campo seleccionado. Para invertir el resultado, simplemente cambie el valor de 1 a -1. Tambiรฉn puede usar la funciรณn limit() para obtener solo los primeros registros ordenados.

MongoDB Saltar() para paginaciรณn

El mรฉtodo skip() indica MongoDB Para ignorar un nรบmero determinado de documentos antes de devolver el resto. Por sรญ sola, skip() rara vez es รบtil, pero combinada con limit() crea paginaciรณn, lo que permite mostrar los resultados pรกgina por pรกgina.

El siguiente ejemplo omite a los dos primeros empleados y devuelve a los dos siguientes:

db.Employee.find().skip(2).limit(2).forEach(printjson)

Para crear una navegaciรณn pรกgina por pรกgina, siga este patrรณn:

  1. Decida el tamaรฑo de la pรกgina, por ejemplo, 2 documentos por pรกgina.
  2. Multiplica el tamaรฑo de la pรกgina por el nรบmero de pรกgina menos uno para obtener el valor de salto.
  3. Pasa ese valor a skip() y el tamaรฑo de pรกgina a limit().

Por ejemplo, la pรกgina 1 usa skip(0).limit(2), la pรกgina 2 usa skip(2).limit(2) y la pรกgina 3 usa skip(4).limit(2). Siempre agregue tambiรฉn un sort(), para que el orden de los documentos se mantenga estable en todas las pรกginas. Tenga en cuenta que los valores de skip muy grandes pueden ser lentos en colecciones grandes, porque MongoDB Sigue escaneando y descartando los documentos omitidos; la paginaciรณn basada en rangos es mรกs rรกpida a gran escala.

Ordenar por varios campos en MongoDB

MongoDB Puede ordenar por mรกs de un campo a la vez. Usted enumera los campos en el objeto de ordenaciรณn en orden de prioridad, y MongoDB ordena por el primer campo, luego usa el siguiente campo para desempatar, y asรญ sucesivamente.

El siguiente ejemplo ordena a los empleados por nombre en orden ascendente y, para los empleados con el mismo nombre, por Employeeid en orden descendente:

db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)

El orden de las claves en el objeto de ordenaciรณn es importante: EmployeeName se aplica primero porque aparece primero. Esta ordenaciรณn por claves mรบltiples es รบtil para informes donde se agrupa por un campo y luego se clasifica dentro de cada grupo. Para obtener el mejor rendimiento en colecciones grandes, cree un รญndice compuesto que coincida con los campos y las direcciones utilizadas en la ordenaciรณn.

Preguntas Frecuentes

Sin sort(), MongoDB Devuelve los documentos en orden natural, que generalmente refleja su orden en el disco y no estรก garantizado. Para un orden predecible, siempre agregue una funciรณn sort() explรญcita a un campo como _id.

Lรณgicamente MongoDB Siempre se aplica `sort()` antes de `limit()`, independientemente del orden en que se encadenen. Esto significa que `limit()` devuelve los primeros documentos del resultado ordenado, no un subconjunto aleatorio que luego se ordena.

Ordenar grandes conjuntos de resultados sin un รญndice fuerza una ordenaciรณn en memoria, que falla una vez que supera el lรญmite de memoria. Crear un รญndice en el campo de ordenaciรณn permite MongoDB Devuelve los resultados ordenados de forma eficiente.

La IA puede convertir una solicitud simple como "los cinco empleados mรกs recientes" en una consulta find(), sort() y limit() con la direcciรณn y el recuento correctos. Ademรกs, explica cada modificador para que los principiantes aprendan el patrรณn.

Sรญ. La IA puede inspeccionar un plan de consulta, detectar ordenaciones en memoria y recomendar el รญndice necesario para admitir la ordenaciรณn. Esto ayuda a los desarrolladores a acelerar la ordenaciรณn y limitar las consultas en colecciones grandes.

Resumir este post con: