Visão geral
Neste guia, você aprenderá a fazer pesquisas em seus documentos usando o recurso de pesquisa do MongoDB . A biblioteca PHP permite que você execute queries de pesquisa do MongoDB Search usando o Construtor de agregação.
Para saber mais sobre a pesquisa do MongoDB, consulte a Visão geral da pesquisa do MongoDB. A implementação do MongoDB Search para a biblioteca PHP usa internamente o operador de agregação $search para executar as queries. Para saber mais sobre este operador, consulte a referência $search na documentação do Atlas.
Observação
MongoDB Vector Search
Para realizar pesquisas sobre incorporações vetoriais no MongoDB, você pode usar a API de pesquisa vetorial do MongoDB. Para saber mais sobre esse recurso, consulte o Guia Executar uma pesquisa vetorial do MongoDB.
Índice de pesquisa do MongoDB
Antes de executar query de pesquisa do MongoDB Search, você deve criar um índice de pesquisa do MongoDB Search em sua coleção. Para aprender mais sobre como criar esse tipo de índice, consulte o guia Índices de pesquisa do MongoDB.
Estágio de agregação da pesquisa
Importe as seguintes classes para o seu aplicativo para executar querys de pesquisa do MongoDB usando o Construtor de Agregação:
use MongoDB\Builder\Pipeline; use MongoDB\Builder\Search; use MongoDB\Builder\Stage;
Para criar um estágio $search em seu pipeline de agregação , execute as seguintes ações:
Crie uma instância
Pipelinepara armazenar os estágios do pipeline.Chame o método
Stage::search()para criar o estágio MongoDB pesquisa.Dentro do corpo do método
search(), use métodos da classe de construtoresSearchpara construir seus critérios da query de pesquisa.
O código a seguir demonstra o modelo para a construção de queries de pesquisa básicas do MongoDB Search:
$pipeline = new Pipeline( Stage::search( /* MongoDB Search query specifications Search::compound(...) */ ), );
Exemplos de query de pesquisa do MongoDB
Nesta seção, você pode aprender a executar diferentes tipos de query de pesquisa do MongoDB Search usando o construtor de agregação. Os exemplos nesta seção utilizam dados de amostra da coleção sample_restaurants.restaurants.
Query composta com filtro
Utilize o método Search::compound() para unir dois ou mais operadores em uma única query. Este método aceita argumentos nomeados para suas cláusulas, como must e filter. Em cada cláusula, utilize o método Search::text() para especificar as cadeias de caracteres a serem procuradas ao realizar a pesquisa de texto completo.
Este exemplo executa uma query de pesquisa do MongoDB Search que tem as seguintes especificações:
Inclui uma cláusula
mustpara pesquisar o camponamepara a string"kitchen"Inclui uma cláusula
shouldpara classificar altamente documentos em que o campocuisineinclui"american"Inclui um campo
filterpara incluir apenas documentos nos quais o valorboroughé"Queens"nos resultados
$pipeline = new Pipeline( Stage::search( Search::compound( must: [ Search::text( query: 'kitchen', path: 'name', ), ], should: [ Search::text( query: 'american', path: 'cuisine', ), ], filter: [ Search::text( query: 'Queens', path: 'borough', ), ], ), ), Stage::project( borough: 1, cuisine: 1, name: 1, ), Stage::limit(3), ); $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"} // Results truncated
Query de preenchimento automático
A biblioteca PHP oferece o método Search::autocomplete() para executar pesquisas de preenchimento automático em documentos nas suas coleções.
Para saber mais sobre esse tipo de query de pesquisa, consulte a referência de preenchimento automático na documentação do Atlas.
Observação
Seu índice de pesquisa do MongoDB deve ser configurado para queries de preenchimento automático. Para saber mais, consulte Como criar índice de campos para preenchimento automático na documentação do Atlas.
O código a seguir executa uma query de preenchimento automático da pesquisa MongoDB para a string "Lucy" no campo name:
$pipeline = new Pipeline( Stage::search( Search::autocomplete( query: 'Lucy', path: 'name', ), ), Stage::limit(3), Stage::project(_id: 0, name: 1), ); $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"name":"Juicy Lucy"} {"name":"Lucy'S Vietnamese Kitchen"} {"name":"Lucy'S Cantina Royale"} // Results Truncated
Você também pode passar os seguintes parâmetros opcionais para o método autocomplete() para customizar a query:
Parâmetro opcional | Descrição | Valor padrão |
|---|---|---|
| Permite a pesquisa difusa e as opções de pesquisa difusa |
|
| Especifica a ordem na qual pesquisar tokens |
|
Para aprender mais sobre esses parâmetros, consulte a seção Opções da referência do operador autocomplete na documentação do Atlas.
opções de pesquisa
Você pode utilizar o método search() para executar muitos tipos de queries de pesquisa do MongoDB Search. Dependendo da query desejada, você pode passar os seguintes parâmetros opcionais para search():
Parâmetro opcional | Tipo | Descrição |
|---|---|---|
|
| Fornece o nome do índice de pesquisa MongoDB a ser usado |
|
| Especifica as opções de realce para exibir os termos de pesquisa em seu contexto original |
|
| Paraleliza a query de pesquisa entre segmentos em nós de pesquisa dedicados |
|
| Especifica as opções de contagem para recuperar uma contagem dos resultados |
|
| Especifica um ponto de referência para retornar documentos que começam imediatamente após esse ponto |
|
| Especifica um ponto de referência para retornar documentos que começam imediatamente antes desse ponto |
|
| Especifica se um detalhamento da pontuação para os resultados deve ser recuperado |
|
| Especifica os campos nos quais classificar os resultados |
|
| Especifica se uma pesquisa completa do documento deve ser executada no banco de dados de backend ou se deseja retornar apenas campos de origem armazenados diretamente da Pesquisa MongoDB |
|
| Especifica a opção de rastreamento para recuperar informações de análise sobre os termos de pesquisa |
Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $search na documentação do Atlas.