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.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Retrieve Data

Neste guia, você pode aprender como usar o driver C++ para recuperar dados de uma coleção MongoDB usando operações de leitura. Você pode chamar o método find() ou find_one() em uma coleção para recuperar documentos que correspondam a um conjunto de critérios.

Os exemplos neste guia usam a collection companies no banco de dados sample_training dos conjuntos de banco de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação C++ , instancie um mongocxx::client que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis db e collection :

auto db = client["sample_training"];
auto collection = db["companies"];

Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.

O driver C++ inclui dois métodos para recuperar documentos de uma coleção: find_one() e find(). Esses métodos usam um filtro de query e retornam um ou mais documentos correspondentes. Um filtro de query é um objeto que especifica os documentos que você deseja recuperar em sua query.

Dica

Para saber mais sobre filtros de queries, consulte Especificar uma query.

Para localizar um único documento em uma coleção, chame o método find_one() e passe um filtro de query que especifique os critérios do documento que você deseja localizar.

O método find_one() retorna uma instância de std::optional< bsoncxx::document::value >. Se o filtro de consulta corresponder a um documento, o objeto optional conterá um valor do tipo bsoncxx::document::value. Se o filtro de query não corresponder a nenhum documento, o objeto optional não conterá valor.

Se o filtro de query corresponder a mais de um documento, o método find_one() retornará o primeiro documento correspondente dos resultados recuperados.

Dica

O método find_one() é útil quando você sabe que há apenas um documento correspondente ou se você está interessado apenas na primeira correspondência.

O exemplo a seguir usa o método find_one() para localizar o primeiro documento no qual o campo name tem o valor "LinkedIn":

auto result = collection.find_one(make_document(kvp("name", "LinkedIn")));
std::cout << bsoncxx::to_json(*result) << std::endl;
{ "_id" : { "$oid" : "52cdef7c4bab8bd675297e0c" }, "name" : "LinkedIn", "permalink" : "linkedin",
"crunchbase_url" : "http://www.crunchbase.com/company/linkedin", "homepage_url" : "http://linkedin.com",
...

Dica

Ordem de classificação

O método find_one() retorna o primeiro documento em ordem natural no disco se nenhum critério de classificação for especificado.

Para saber mais sobre classificação, consulte a seção Classificar do guia Especificar documentos para devolução.

Para encontrar vários documentos em uma coleção, passe um filtro de queries para o método find() que especifica os critérios dos documentos que você deseja recuperar.

O exemplo a seguir usa o método find() para localizar todos os documentos nos quais o campo founded_year tem o valor 1970:

auto cursor = collection.find(make_document(kvp("founded_year", 1970)));

O método find() retorna uma instância de mongocxx::cursor, que você pode iterar para ver os documentos correspondentes. Um cursor é um mecanismo que permite que um aplicação itere sobre os resultados do banco de dados de dados enquanto mantém apenas um subconjunto deles na memória em determinado momento. Os cursores são úteis quando o método find() retorna uma grande quantidade de documentos.

Você pode iterar sobre os documentos em um cursor usando um loop for baseado em intervalo, conforme mostrado no exemplo a seguir:

auto cursor = collection.find(make_document(kvp("founded_year", 1970)));
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "52cdef7d4bab8bd675298be4" }, "name" : "Mitsubishi Motors",
"permalink" : "mitsubishi-motors", "crunchbase_url" : "http://www.crunchbase.com/company/mitsubishi-motors",
...
{ "_id" : { "$oid" : "52cdef7e4bab8bd67529b996" }, "name" : "Western Digital",
"permalink" : "western-digital", "crunchbase_url" : "http://www.crunchbase.com/company/western-digital",
...
{ "_id" : { "$oid" : "52cdef7e4bab8bd67529b9f1" }, "name" : "Celarayn", "permalink" : "celarayn",
"crunchbase_url" : "http://www.crunchbase.com/company/celarayn",
...

Observação

Localizar todos os documentos

Para encontrar todos os documentos em uma coleção, passe um filtro vazio para o método find() :

auto cursor = collection.find({})

Você pode modificar o comportamento dos métodos find() e find_one() passando uma instância da classe mongocxx::options::find como parâmetro. A tabela seguinte descreve alguns dos campos que você pode definir em uma instância mongocxx::options::find :

Campo
Descrição

batch_size

O número de documentos a serem devolvidos por lote.
Tipo: std::int32_t

collation

O agrupamento a ser usado para a operação.
Tipo: bsoncxx::document::view_or_value

comment

O comentário a ser anexado à operação.
Tipo: bsoncxx::string::view_or_value

cursor_type

O tipo de cursor a ser usado para a operação.
Tipo: cursor::type

limit

O número máximo de documentos que a operação pode retornar.
Tipo: std::int64_t

skip

O número de documentos a ignorar antes de retornar os resultados.
Tipo: std::int64_t

sort

A ordem em que a operação retorna documentos correspondentes.
Tipo: bsoncxx::document::view_or_value

O exemplo a seguir usa o método find() para localizar todos os documentos nos quais o campo number_of_employees tem o valor 1000 e instrui a operação a retornar um máximo de 5 resultados:

mongocxx::options::find opts;
opts.limit(5);
auto cursor = collection.find(make_document(kvp("number_of_employees", 1000)), opts);

Para obter uma lista completa dos campos de objeto mongocxx::options::find, consulte a documentação de API.

Para saber mais sobre filtros de queries, consulte Especificar uma query.

Para obter exemplos de código executáveis de recuperação de documentos com o driver C++, consulte Ler dados.

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