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

Limite o número de resultados retornados

Nesta página

  • Visão geral
  • Dados de amostra para exemplos
  • Limitar documentos
  • exemplo de método limit()
  • 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 operações de limite . Estas operações especificam o número de documentos retornados de uma operação de leitura.

Use o método limit() para limitar o número de documentos que uma operação de leitura pode gerar. A operação retornará menos documentos se não houver documentos suficientes presentes para atingir o limite especificado.

Se você usar o método limit() com o método skip() , o salto será aplicado primeiro e o limite será aplicado somente aos documentos restantes. Para saber mais sobre pular operações, consulte o guia Ignorar resultados retornados .

Os exemplos deste guia utilizam o seguinte Book estruturado 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 especificar o número máximo de documentos para retornar em uma query ou em um pipeline de agregação .

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

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

  • Estrutura FindOptions: use a opção limit

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

Para limitar o número de documentos retornados, você pode encadear o método limit() ao 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 length

  • Limita os resultados aos três primeiros documentos

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

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

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

  • Filtra os resultados para incluir apenas documentos em que o campo length é maior que 1000

  • Classifica os resultados em ordem crescente de seus valores de campo length

  • Limita os resultados aos dois primeiros 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).with_options(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 }

Você pode usar o estágio $limit em um pipeline de agregação para limitar os resultados retornados. 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 decrescente de seus valores de campo length

  • Limita os resultados retornados aos dois primeiros documentos

let pipeline = vec![
doc! { "$match": {} },
doc! { "$sort": { "length": -1 } },
doc! { "$limit": 2 },
];
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)})

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

Ignorar resultados devolvidos