Overview
En esta guía, puede aprender cómo usar el MongoDB Rust Driver para realizar operaciones de límite. Estas operaciones especifican el número de documentos devueltos por una operación de lectura.
Usa el limit() método para limitar el número de documentos que una operación de lectura puede devolver. La operación devuelve menos documentos si no hay suficientes presentes para alcanzar el límite especificado.
Si utiliza el método limit() con el método skip(), el omitir se aplica primero, y el límite solo se aplica a los documentos que quedan. Para obtener más información sobre las operaciones de omisión, consulta el Guía de Omitir resultados devueltos.
Datos de muestra para ejemplos
Los ejemplos en esta guía usan la siguiente estructura Book como modelo para documentos en la colección books:
struct Book { name: String, author: String, length: i32, }
El siguiente código muestra cómo insertar datos en la colección books:
let uri = "connection string"; let client = Client::with_uri_str(uri).await?; let my_coll: Collection<Book> = client.database("db").collection("books"); let books = vec![ Book { name: "The Brothers Karamazov".to_string(), author: "Dostoyevsky".to_string(), length: 824, }, Book { name: "Atlas Shrugged".to_string(), author: "Rand".to_string(), length: 1088, }, Book { name: "Les Misérables".to_string(), author: "Hugo".to_string(), length: 1462, }, Book { name: "A Dance with Dragons".to_string(), author: "Martin".to_string(), length: 1104, }, ]; my_coll.insert_many(books, None).await?;
Limitar documentos
Puedes especificar el número máximo de documentos a devolver en una query o en un pipeline de agregación.
Query Results Ejemplo
Para limitar el número de documentos devueltos, puedes inicializar una instancia de FindOptions y especificar el número de documentos que deseas limitar utilizando el método limit(). Luego, pasa tu estructura FindOptions como un parámetro al método find().
Este ejemplo ejecuta una operación find() que realiza las siguientes acciones:
Filtra los resultados para incluir solo documentos donde el campo
lengthsea mayor que1000Ordena los resultados en orden ascendente de los valores del campo
lengthLimita los resultados a los dos primeros documentos.
let filter = doc! { "length": { "$gt": 1000 } }; let find_options = FindOptions::builder() .sort(doc! { "length": 1 }) .limit(2) .build(); let mut cursor = my_coll.find(filter, find_options).await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Book { name: "Atlas Shrugged", author: "Rand", length: 1088 } Book { name: "A Dance with Dragons", author: "Martin", length: 1104 }
Ejemplo de agregación
Puedes usar la etapa $limit en una pipeline de agregación para limitar los resultados devueltos. Para obtener más información sobre las operaciones de agregación, consulta la guía de agregación.
Este ejemplo ejecuta un pipeline de agregación que realiza las siguientes acciones:
Ordena los resultados en orden descendente según los valores del campo
lengthLimita los resultados devueltos a los dos primeros documentos
let pipeline = vec![ doc! { "$match": {} }, doc! { "$sort": { "length": -1 } }, doc! { "$limit": 2 }, ]; let mut cursor = my_coll.aggregate(pipeline, None).await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Document({"_id": ObjectId("..."), "name": String("Les Misérables"), "author": String("Hugo"), "length": Int32(1462)}) Document({"_id": ObjectId("..."), "name": String("A Dance with Dragons"), "author": String("Martin"), "length": Int32(1104)})
Información Adicional
Para obtener más información sobre las operaciones mencionadas en esta guía, consulta las siguientes guías:
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: