Visão geral
Neste guia, você pode aprender como usar o MongoDB Rust Driver para executar uma operação de leitura que ignora um número especificado de documentos ao retornar resultados.
Dados de amostra para exemplos
Os exemplos nesta aba usam o seguinte struct Book
como um modelo para documentos na coleção books
:
struct Book { name: String, author: String, length: i32, }
O seguinte código mostra como inserir dados de amostra na coleção 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?;
Ignorar documentos
Você pode ignorar os resultados recuperados por uma query ou ignorar os resultados dentro de um pipeline de agregação .
Se o número de documentos ignorados exceder o número de documentos correspondentes para uma query, essa query não retornará nenhum documento.
Encontre documentos de retorno de operações em uma ordem natural que não esteja classificada em nenhum campo. Para evitar ignorar documentos aleatórios, use o método sort()
para classificar documentos em um campo com um valor exclusivo antes de definir uma opção de ignorar. Para saber mais, consulte o guia Classificar resultados.
Exemplo de resultados da query
Para ignorar documentos, você pode inicializar uma instância FindOptions
e especificar o número de documentos que deseja ignorar usando o método skip()
. Em seguida, passe sua estrutura FindOptions
como parâmetro para o método find()
.
Este exemplo executa uma operação find()
que executa as seguintes ações:
Classifica os resultados em ordem crescente de seus valores de campo
author
Pula os dois primeiros documentos
Retorna os documentos restantes
let find_options = FindOptions::builder() .sort(doc! { "author": 1 }) .skip(2) .build(); let mut cursor = my_coll.find(doc! {}, find_options).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 }
Exemplo de agregação
Você pode usar o estágio $skip
em um agregação pipeline para ignorar documentos. Para saber mais sobre as operações de agregação , consulte o Guia de agregação.
Este exemplo executa um pipeline de agregação que executa as seguintes ações:
Classifica os resultados em ordem crescente de seus valores de campo
author
Pula o primeiro documento
Retorna os documentos restantes
let pipeline = vec![ doc! { "$match": {} }, doc! { "$sort": { "author": 1 } }, doc! { "$skip": 1 }, ]; 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)}) Document({"_id": ObjectId("..."), "name": String("Atlas Shrugged"), "author": String("Rand"), "length": Int32(1088)})
Informações adicionais
Para saber mais sobre as operações mencionadas neste guia, consulte os seguintes guias:
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: