Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/ / /

Ignorar resultados devolvidos

Nesta página

  • Visão geral
  • Dados de amostra para exemplos
  • Ignorar documentos
  • Exemplo de método skip()
  • Exemplo de opções
  • Exemplo de agregação
  • Informações adicionais
  • Documentação da API

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 {
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?;

Você pode ignorar os resultados recuperados por uma query ou ignorar os resultados dentro de um pipeline de agregação .

Esta seção descreve como ignorar resultados das seguintes maneiras:

  • Métodoskip() : Encadeie o skip() método ao find() método

  • Estrutura FindOptions: Use o skip() método construtor de opções para configurar uma FindOptions estrutura

  • Aggregation pipeline: Crie um pipeline que use o $skip estágio

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 encadear o método skip() ao método find(). O método skip() pega um número inteiro que especifica o número de documentos a serem omitidos desde o início do conjunto de resultados.

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

Alternativamente, se você estiver configurando e reutilizando opções para sua query, você poderá utilizar o FindOptions. Defina o campo skip da estrutura FindOptions usando o método construtor de opções skip() . Em seguida, encadeie o método with_options() ao método find() e passe sua estrutura FindOptions como parâmetro para o método with_options().

Este exemplo executa uma operação find() que executa as seguintes ações:

  • Classifica os resultados em ordem decrescente de seus valores de campo name

  • Pula o primeiro documento

  • Retorna os 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 }

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).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 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:

Voltar

Classificar resultados