Overview
En esta guía, puedes aprender a especificar qué documentos devolver de una operación de lectura encadenando los siguientes métodos al find
:
límite: Especifica el número máximo de documentos que se devolverán de una query
sort: Especifica el orden de clasificación de los documentos devueltos.
saltar: Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la query.
Datos de muestra
El ejemplo de esta guía utiliza la colección movies en la base de datos sample_mflix de los Conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los datasets de muestra, consulta la guía Primeros Pasos con Atlas.
Limit
Para especificar el número máximo de documentos devueltos de una operación de lectura, aplica la opción limit a la operación. Puedes establecer esta opción encadenando el método limit al método find.
El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de 'Italian' y limita los resultados a 5 documentos:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .limit(5) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "V & T Restaurant", cuisine: "Italian" } Restaurant { name: "Gargiulo'S Restaurant", cuisine: "Italian" } Restaurant { name: "Patsy'S Italian Restaurant", cuisine: "Italian" } Restaurant { name: "John'S Restaurant", cuisine: "Italian" } Restaurant { name: "Ferdinando'S Restaurant", cuisine: "Italian" }
Tip
El ejemplo anterior devuelve los primeros cinco documentos que coinciden con la consulta según su orden natural en la base de datos. La siguiente sección describe cómo retornar los documentos en un orden especificado.
Sort
Para devolver documentos en un orden especificado, aplica la opción sort a la operación de lectura. Puede establecer esta opción encadenando el método setter sort al método find.
Al llamar a sort, pasa el campo por el que se deben ordenar los resultados y la dirección de orden. Un valor de dirección de orden 1 ordena los valores de menor a mayor, y un valor de -1 los ordena de mayor a menor. Si no especifica un orden, MongoDB no garantiza el orden de los resultados de la query.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de 'Italian', ordenados en orden ascendente de los valores de campo name:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .sort(doc! { "name": 1 }) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Antonio'S Trattoria", cuisine: "Italian" } Restaurant { name: "Antonioni'S", cuisine: "Italian" } Restaurant { name: "Antonucci", cuisine: "Italian" } ... Restaurant { name: "Zucchero E Pomodori", cuisine: "Italian" }
Omitir
Para omitir una cantidad especificada de documentos antes de devolver los resultados de la query, aplica la opción skip a la operación de lectura. Puede establecer esta opción encadenando el método setter skip al método find.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo borough de 'Manhattan' y omite los primeros 10 documentos:
let mut cursor = my_coll .find(doc! { "borough": "Manhattan" }) .skip(10) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Beyond Thai Kitchen", cuisine: "Thai" } Restaurant { name: "Rainbow Room", cuisine: "American" } ... Restaurant { name: "Fairfield Inn Suites Penn Station", cuisine: "Other" }
Combine Limit, Sort y Skip
Puedes encadenar los métodos limit, sort y skip en una sola llamada al método find. Esto le permite establecer un número máximo de documentos ordenados para devolver de la operación de lectura, omitiendo una cantidad especificada de documentos antes de devolverlos.
El siguiente ejemplo devuelve 5 documentos que tienen un valor de cuisine de 'Italian'. Los resultados se ordenan en orden ascendente por el valor del campo name, omitiendo los primeros 10 documentos:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .sort(doc! { "name": 1 }) .skip(10) .limit(5) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Acqua", cuisine: "Italian" } Restaurant { name: "Acqua Restaurant", cuisine: "Italian" } Restaurant { name: "Acqua Santa", cuisine: "Italian" } Restaurant { name: "Acquista Trattoria", cuisine: "Italian" } Restaurant { name: "Acquolina Catering", cuisine: "Italian" }
Nota
El orden en que llamas a estos métodos no cambia los documentos que se devuelven. El servidor reorganiza automáticamente las llamadas para realizar primero la operación de ordenamiento, luego la operación de salto y después la operación de límite.
Información Adicional
Para obtener más información sobre la recuperación de documentos, consulte la Guía sobre cómo encontrar documentos.
Para más información sobre cómo especificar una query, consulta la guía de Especificar una query.
Documentación de la API
Para obtener más información sobre el método find y sus opciones, consulta la documentación de la API.