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.

Executar uma query de pesquisa do MongoDB

Neste guia, você pode aprender como executar uma query de um índice do MongoDB Search e usar a funcionalidade avançada de pesquisa de texto completo em seus aplicativos de driver C++ . Você pode executar query de um índice de pesquisa usando um estágio de pipeline de agregação $search.

Para saber mais sobre a $search pipeline stage, consulte o guia $search no manual do MongoDB Server.

Observação

Requisitos da versão do Atlas e Community Edition

O operador de pipeline de agregação $search está disponível somente para coleções hospedadas em clusters do MongoDB Atlas que executam o MongoDB v4.2 ou posterior, ou em clusters do MongoDB Community Edition que executam o MongoDB v8.2 ou posterior. As coleções devem ser cobertas por um índice de pesquisa do MongoDB. Para saber mais sobre a configuração necessária e a funcionalidade desse operador, consulte a documentação do MongoDB pesquisa.

Os exemplos neste guia usam a coleção sample_mflix.movies dos conjuntos de dados de amostra do Atlas. Para aprender como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar do MongoDB.

Antes de executar uma pesquisa em uma coleção do Atlas, primeiro você deve criar um índice do MongoDB Search na coleção. Um índice do MongoDB Search é uma estrutura de dados que categoriza os dados em um formato pesquisável. Para saber como criar um índice de pesquisa do MongoDB, consulte o guia Índices de pesquisa do MongoDB.

Para usar a fase do pipeline de agregação $search, você deve especificar um operador de query do MongoDB pesquisa que indique o tipo de query que você deseja executar. Opcionalmente, você pode usar um coletor para especificar os valores e faixas da saída da query. Para visualizar uma tabela de todos os operadores e coletores disponíveis com o MongoDB pesquisa, consulte a página Operadores e Coletores na documentação do Atlas.

O exemplo seguinte utiliza o operador compound para combinar vários operadores em uma única query. Para saber mais, consulte o guia Operador composto na documentação do Atlas.

A query tem os seguintes critérios de pesquisa:

  • O campo genres não deve conter Comedy.

  • O campo title deve conter a string New York.

A query também inclui as seguintes fases:

  • $limitpara limitar a saída a 10 resultados.

  • $project, para excluir todos os campos, exceto title e adicionar um campo chamado score.

#include <iostream>#include <bsoncxx/json.hpp>#include <mongocxx/client.hpp>#include <mongocxx/exception/exception.hpp>#include <mongocxx/instance.hpp>#include <mongocxx/pipeline.hpp> int main() { const mongocxx::instance instance{}; try { const mongocxx::client client{mongocxx::uri{"<connection-string>"}}; auto collection = client["sample_mflix"]["movies"]; mongocxx::pipeline pipeline{}; auto search_stage = bsoncxx::from_json(R"( { "$search": { "index": "test_index", "compound": { "mustNot": [ { "text": { "query": [ "Comedy" ], "path": "genres" } } ], "must": [ { "text": { "query": [ "New York" ], "path": "title" } } ] } } } )"); pipeline.append_stage(search_stage.view()); pipeline.limit(10); pipeline.project(bsoncxx::from_json(R"( { "_id" : 0, "title" : 1, "score" : { "$meta" : "searchScore" } } )")); auto cursor = collection.aggregate(pipeline); for (const auto& doc : cursor) { std::cout << bsoncxx::to_json(doc) << std::endl; } } catch (const mongocxx::exception& e) { std::cerr << "MongoDB error: " << e.what() << std::endl; return EXIT_FAILURE; } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; return EXIT_FAILURE; } return EXIT_SUCCESS;}

Para saber mais sobre os operadores disponíveis do MongoDB Pesquisa, consulte o guia Operadores e coletores na documentação do MongoDB Atlas.

Para obter mais informações sobre a pesquisa MongoDB e para ver mais exemplos de query, consulte a documentação da pesquisa MongoDB.

Se você deseja realizar pesquisas vetoriais em seus dados armazenados no Atlas, deve usar o MongoDB Vector Search. Para saber mais sobre a pesquisa vetorial do MongoDB, consulte a documentação da pesquisa vetorial do MongoDB.