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 consulta
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 que se pueden devolver en una operación de lectura, aplique la opción limit a la operación. Puede configurar esta opción encadenando el método limit con el 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, especifique el campo por el que desea ordenar los resultados y la dirección de ordenación. Un valor de 1 ordena los valores de menor a mayor, y un valor de -1 los ordena de mayor a menor. Si no especifica una ordenación, MongoDB no garantiza el orden de los resultados de la consulta.
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 cuyo valor cuisine es 'Italian'. Los resultados se ordenan en orden ascendente según 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 se llaman estos métodos no cambia los documentos que se devuelven. El servidor reordena automáticamente las llamadas para realizar primero la operación de ordenación, luego la de omisión y, finalmente, la 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 find método y sus opciones, consulte la documentación de la API.