Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Retrieve Data

Neste guia, você aprenderá como recuperar dados de sua collection do MongoDB usando operações de leitura. Operações de leitura são comandos que recuperam documentos do servidor.

Existem dois tipos de operações de leitura:

  • Encontrar operações, que permitem recuperar documento de suas collection

  • Operações de agregação, que permitem transformar os dados em sua collection

Este guia inclui as seguintes seções:

Os exemplos deste guia usam os seguintes documentos de amostra. Cada documento representa um item no estoque de uma loja e contém informações sobre sua categorização e preço unitário:

let docs = vec! [
Inventory {
item: "candle".to_string(),
category: "decor".to_string(),
unit_price: 2.89,
},
Inventory {
item: "blender".to_string(),
category: "kitchen".to_string(),
unit_price: 38.49,
},
Inventory {
item: "placemat".to_string(),
category: "kitchen".to_string(),
unit_price: 3.19,
},
Inventory {
item: "watering can".to_string(),
category: "garden".to_string(),
unit_price: 11.99,
}
];

Use localizar operações para recuperar dados do MongoDB. As operações de localização consistem nos métodos find() e find_one() .

Para encontrar todos os documentos que correspondem aos seus critérios, use o método find() . Este método utiliza um filtro de query como parâmetro. Um filtro de query consiste nos campos e valores que formam critérios para a correspondência de documentos.

O método retorna um tipo de Cursor que você pode iterar para recuperar quaisquer documentos que correspondam aos critérios do filtro.

Para ver um exemplo que usa esse método para recuperar dados, consulte o exemplo find().

Para saber mais sobre como especificar uma query, consulte o guia Especificar uma Consulta .

Para encontrar o primeiro documento que corresponda aos seus critérios, use o método find_one() . Este método utiliza um filtro de query como parâmetro. Um filtro de query consiste nos campos e valores que formam critérios para a correspondência de documentos.

Se um documento corresponder aos critérios de filtro, o método retornará um tipo de Result<Option<T>> com um valor de Some. Se nenhum documento corresponder aos critérios de filtro, find_one() retornará um tipo Result<Option<T>> com um valor de None.

Para ver um exemplo que usa esse método para recuperar dados, consulte o exemplo find_one().

Você pode modificar o comportamento de find() passando uma instância FindOptions como um parâmetro e você pode modificar o comportamento de find_one() passando uma instância FindOneOptions .

Para usar valores padrão para cada configuração, especifique o valor None como o parâmetro de opções.

A tabela abaixo descreve as configurações comumente usadas que você pode especificar em FindOptions e FindOneOptions:

Contexto
Descrição

collation

O agrupamento a ser usado ao classificar os resultados. Para saber mais sobre agrupamentos, consulte o guia Agrupamentos.

Tipo: Collation
Padrão: None

hint

O índice a ser usado para a operação. Para saber mais sobre índices, consulte Índices no manual do servidor.

Tipo: Hint
Padrão: None

projection

A projeção a ser usada ao retornar resultados.

Tipo: Document
Padrão: None

read_concern

A read concern a ser usada para a operação de localização. Se você não definir esta opção, a operação herdará a read concern definida para a coleção. Para saber mais sobre read concern, consulte Read Concern no manual do servidor.

Tipo: ReadConcern

skip

O número de documentos a ignorar ao retornar resultados. Para aprender mais sobre como usar o método construtores skip(), consulte Ignorar resultados retornados.

Tipo: u64
Padrão: None

sort

A classificação a ser usada ao retornar resultados. Por padrão, o driver retorna documentos em sua ordem natural, ou como eles aparecem no banco de dados. Para saber mais, consulte ordem natural no glossário manual do servidor. Para aprender mais sobre como usar o método de construtores sort(), consulte Classificar resultados.

Tipo: Document
Padrão: None

Observação

Opções de Instanciação

O driver Rust implementa o padrão de design Builder para a criação de muitos tipos diferentes, como FindOneOptions ou FindOptions. Você pode usar o método builder() de cada tipo para construir uma instância de opções encadeando as funções do construtor de opções uma de cada vez.

Para obter uma lista completa de configurações que você pode especificar para cada tipo, consulte a documentação da API para FindOptions e FindOneOptions.

As seções seguintes contêm exemplos que utilizam os métodos find() e findOne() para recuperar documentos de amostra que correspondem aos critérios de filtro.

Este exemplo mostra como chamar o método find() com os seguintes parâmetros:

  • Um filtro de query que corresponde a documento em que o valor de unit_price é menor que 12.00 e o valor de category não é "kitchen"

  • Uma instância FindOptions que classifica documentos correspondentes por unit_price em ordem decrescente

let opts = FindOptions::builder()
.sort(doc! { "unit_price": -1 })
.build();
let mut cursor = my_coll.find(
doc! { "$and": vec!
[
doc! { "unit_price": doc! { "$lt": 12.00 } },
doc! { "category": doc! { "$ne": "kitchen" } }
] },
opts
).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
};
Inventory { item: "watering can", category: "garden", unit_price: 11.99 }
Inventory { item: "candle", category: "decor", unit_price: 2.89 }

Este exemplo mostra como chamar o método find_one() com os seguintes parâmetros:

  • Um filtro de query que corresponde a documento onde o valor de unit_price é menor ou igual a 20.00

  • Uma instância FindOneOptions que ignora os dois primeiros documentos correspondentes

let opts = FindOneOptions::builder().skip(2).build();
let result = my_coll.find_one(
doc! { "unit_price":
doc! { "$lte": 20.00 } },
opts
).await?;
println!("{:#?}", result);
Some(
Inventory {
item: "watering can",
category: "garden",
unit_price: 11.99,
},
)

Utilize operações de agregação para recuperar e transformar dados de sua collection. Você pode executar operações de agregação usando o método aggregate() .

O método aggregate() usa um aggregation pipeline como parâmetro. Um pipeline de agregação inclui um ou mais estágios que especificam como transformar dados. Um estágio inclui um operador de agregação (prefixado com um $) e quaisquer parâmetros exigidos para este operador.

Para saber mais sobre agregações e ver exemplos de agregação, consulte o Guia de agregação .

O método retorna os documentos resultantes em um tipo Cursor . Se o pipeline de agregação não contiver um estágio $match , o pipeline processará todos os documentos na coleção.

Você pode modificar o comportamento do aggregate() passando uma instância do AggregateOptions como um parâmetro opcional.

Para usar valores padrão para cada configuração, especifique o valor None como o parâmetro de opções.

A tabela a seguir descreve as configurações comumente usadas que você pode especificar em AggregateOptions:

Contexto
Descrição

allow_disk_use

Permite gravar em arquivos temporários. Se true, os estágios de agregação poderão gravar dados no subdiretório _tmp do diretório dbPath.

Tipo: bool
Padrão: false

batch_size

Especifica o número máximo de documentos que o servidor retorna por lote de cursor. Essa opção define o número de documentos que o cursor mantém na memória, em vez do número de documentos que o cursor retorna.

Tipo: u32
Padrão: 101 documentos inicialmente, 16 MB máximo para lotes subsequentes

collation

O agrupamento a ser usado ao classificar os resultados. Para saber mais sobre agrupamentos, consulte o guia Agrupamentos.

Tipo: Collation
Padrão: None

hint

O índice a ser usado para a operação. Para saber mais sobre índices, consulte Índices no manual do servidor.

Tipo: Hint
Padrão: None

read_concern

A read concern a ser usada para a operação de localização. Se você não definir esta opção, a operação herdará a read concern definida para a coleção. Para saber mais sobre read concern, consulte Read Concern no manual do servidor.

Tipo: ReadConcern

write_concern

O write concern para a operação. Se você não definir esta opção, a operação herdará o write concern definido para a coleção. Para saber mais sobre write concern, consulte write concern no manual do servidor.

Tipo: WriteConcern

Para obter uma lista completa das configurações, consulte a documentação da API para AggregateOptions.

Este exemplo mostra como chamar o método aggregate() com um pipeline que contém os seguintes estágios:

  • Um estágio $group para agrupar documentos pelo campo category e calcular a média do campo unit_price por category

  • Um estágio de $sort para avg_price em ordem crescente

let pipeline = vec![
doc! { "$group": doc! { "_id" : doc! {"category": "$category"} ,
"avg_price" : doc! { "$avg" : "$unit_price" } } },
doc! { "$sort": { "_id.avg_price" : 1 } }
];
let mut cursor = my_coll.aggregate(pipeline, None).await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
};
Document({"_id": Document({"category": String("decor")}), "avg_price": Double(2.890000104904175)})
Document({"_id": Document({"category": String("kitchen")}), "avg_price": Double(20.840000867843628)})
Document({"_id": Document({"category": String("garden")}), "avg_price": Double(11.989999771118164)})

Para obter exemplos executáveis das operações de localização, consulte os seguintes exemplos de uso:

Para saber mais sobre as operações neste guia, consulte a seguinte documentação:

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: