Docs Menu
Docs Home
/ /

Omitir resultados devueltos

En esta guía, puede aprender a utilizar el controlador MongoDB Rust para realizar una operación de lectura que omite una cantidad específica de documentos al devolver resultados.

Los ejemplos de esta guía utilizan lo siguiente: Book Estructura como modelo para los documentos de la colección books:

#[derive(Debug, Serialize, Deserialize)]
struct Book {
name: String,
author: String,
length: i32,
}

El siguiente código muestra cómo insertar datos de muestra 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 {
id: 1,
name: "The Brothers Karamazov".to_string(),
author: "Dostoyevsky".to_string(),
length: 824,
},
Book {
id: 2,
name: "Atlas Shrugged".to_string(),
author: "Rand".to_string(),
length: 1088,
},
Book {
id: 3,
name: "Les Misérables".to_string(),
author: "Hugo".to_string(),
length: 1462,
},
Book {
id: 4,
name: "A Dance with Dragons".to_string(),
author: "Martin".to_string(),
length: 1104,
},
];
my_coll.insert_many(books).await?;

Puede omitir los resultados recuperados por una consulta o puede omitir los resultados dentro de una canalización de agregación.

En esta sección se describe cómo omitir resultados de las siguientes maneras:

  • Métodoskip(): encadena el skip() método al find() método

  • Estructura FindOptions: utilice el skip() método de creación de opciones para configurar una FindOptions estructura

  • Canalización de agregación: crea una canalización que utiliza la $skip etapa

Si la cantidad de documentos omitidos excede la cantidad de documentos coincidentes para una consulta, entonces esa consulta no devuelve ningún documento.

Las operaciones de búsqueda devuelven los documentos en un orden natural, sin clasificarlos por campos. Para evitar omitir documentos aleatorios, utilice el método sort() para ordenar los documentos por un campo con un valor único antes de configurar una opción de omisión. Para obtener más información, consulte Guía deordenamiento de resultados.

Para omitir documentos, puede encadenar el método skip() con el método find(). El método skip() toma un entero que especifica el número de documentos que se omitirán al principio del conjunto de resultados.

Este ejemplo ejecuta una operación find() que realiza las siguientes acciones:

  • Ordena los resultados en orden ascendente de sus valores de campo author

  • Omite los dos primeros documentos

  • Devuelve los documentos restantes

let mut cursor = my_coll
.find(doc! {})
.sort(doc! { "author": 1 })
.skip(2).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Book { name: "A Dance with Dragons", author: "Martin", length: 1104 }
Book { name: "Atlas Shrugged", author: "Rand", length: 1088 }

Como alternativa, si configura y reutiliza opciones para su consulta, puede usar FindOptions. Establezca el campo skip de la estructura FindOptions mediante el método de construcción de opciones skip(). Luego, encadene el método with_options() al método find() y pase su estructura FindOptions como parámetro al método with_options().

Este ejemplo ejecuta una operación find() que realiza las siguientes acciones:

  • Ordena los resultados en orden descendente de sus valores de campo name

  • Omite el primer documento

  • Devuelve los documentos restantes

let find_options = FindOptions::builder()
.sort(doc! { "name": -1 })
.skip(1)
.build();
let mut cursor = my_coll.find(doc! {}).with_options(find_options).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Book { name: "Les Misérables", author: "Hugo", length: 1462 }
Book { name: "Atlas Shrugged", author: "Rand", length: 1088 }

Puedes usar la etapa $skip en un pipeline de agregación para omitir documentos. Para aprender más sobre operaciones de agregación, consulte la guía Agregación.

Este ejemplo ejecuta una canalización de agregación que realiza las siguientes acciones:

  • Ordena los resultados en orden ascendente de sus valores de campo author

  • Omite el primer documento

  • Devuelve los documentos restantes

let pipeline = vec![
doc! { "$match": {} },
doc! { "$sort": { "author": 1 } },
doc! { "$skip": 1 },
];
let mut cursor = my_coll.aggregate(pipeline).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Document({"_id": Int32(3), "name": String("Les Misérables"), "author": String("Hugo"), "length": Int32(1462)})
Document({"_id": Int32(4), "name": String("A Dance with Dragons"), "author": String("Martin"), "length": Int32(1104)})
Document({"_id": Int32(2), "name": String("Atlas Shrugged"), "author": String("Rand"), "length": Int32(1088)})

Para obtener más información sobre las operaciones mencionadas en esta guía, consulta las siguientes guías:

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Ordenar resultados

En esta página