Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/ / /

Ignorar resultados devolvidos

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.

Os exemplos nesta aba usam o seguinte struct Book como um modelo para documentos na coleção books:

#[derive(Debug, Serialize, Deserialize)]
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?;

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.

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 }

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)})

Para saber mais sobre as operações mencionadas neste guia, consulte os seguintes guias:

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

  • find()

  • Encontre opções

  • FindOneOptions

  • Cursor

  • Aggregate()

  • AggregateOptions

Voltar

Classificar resultados

Nesta página