Visão geral
Neste guia, você aprenderá a fazer pesquisas em seus documentos usando o recurso de pesquisa do MongoDB . O Laravel MongoDB fornece uma API para realizar query de pesquisa diretamente em seus modelos. Este guia descreve como criar índices de pesquisa MongoDB e fornece exemplos de como usar a integração Laravel para realizar pesquisas.
Observação
Compatibilidade de implantação
Você pode usar o recurso de pesquisa do MongoDB somente quando se conecta a clusters do MongoDB Atlas. Este recurso não está disponível para implantações autogerenciadas.
Para aprender mais sobre o MongoDB Search, consulte a Visão geral na documentação do Atlas. A API de pesquisa do MongoDB usa internamente o operador de agregação $search para realizar consultas. Para aprender mais sobre este operador, consulte a referência de $search na documentação do Atlas.
Observação
Talvez você não consiga usar os métodos descritos neste guia para todos os tipos de query do MongoDB Search. Para casos de uso mais complexos, crie um pipeline de agregação usando o Construtor de agregação do.
Para realizar pesquisas sobre incorporações vetoriais no MongoDB , você pode usar a API de Vector Search do MongoDB do Laravel. Para saber mais sobre esse recurso, consulte o guia Vector Search do MongoDB .
Crie um índice de pesquisa do MongoDB
Você pode criar um índice de pesquisa do MongoDB de uma das seguintes maneiras:
Chame o método
create()na fachadaSchemae passe o método assistentesearchIndex()com os detalhes da criação do índice. Para aprender mais sobre essa estratégia, consulte a seção Gerenciar índices de pesquisa do MongoDB e pesquisa vetorial do MongoDB do guia Construtor de Esquema.Acesse uma coleção, depois chame o método
createSearchIndex()da Biblioteca PHP do MongoDB, conforme mostrado no código a seguir:$collection = DB::connection('mongodb')->getCollection('movies'); $collection->createSearchIndex( ['mappings' => ['dynamic' => true]], ['name' => 'search_index'] );
Importante
Operações de índice de pesquisa assíncronas
As operações que criam e removem índices do MongoDB Search são executadas de forma assíncrona. Como resultado, você não pode criar um novo índice do MongoDB Search enquanto um índice com o mesmo nome no mesmo namespace estiver sendo descartado. Certifique-se de aguardar até que o MongoDB elimine o índice conflitante antes de chamar o método createSearchIndex().
Além disso, você deve aguardar até que o índice possa ser consultado antes de usá-lo. Para ver se seu índice é consultável, execute o método, localize o documento que descreve o novo índice na saída do método e verifique Collection::listSearchIndexes() o queryable valor do campo. Os documentos adicionados após a criação do índice não estão disponíveis imediatamente nos resultados da consulta.
Executar queries
Nesta seção, você pode aprender como usar a API de pesquisa MongoDB na integração Laravel.
Consultas gerais
A Integração Laravel fornece o método search() como um método construtor de query e como um método de modelo Eloquent. Você pode usar o método search() para executar queries de pesquisa do MongoDB Search em documentos em suas coleções.
Você deve passar um parâmetro operator para o método search() que seja uma instância de SearchOperatorInterface ou um array que contenha o tipo de operador, o nome do campo e o valor da query. Você pode criar uma instância de SearchOperatorInterface ao chamar o método Search::text() e passar o campo que está consultando junto com seu termo ou sua frase de pesquisa.
Você deve incluir a seguinte declaração de importação em seu aplicativo para criar uma instância de SearchOperatorInterface:
use MongoDB\Builder\Search;
O seguinte código executa uma query do MongoDB Search no campo Movie do modelo title para o termo 'dream':
$movies = Movie::search( sort: ['title' => 1], operator: Search::text('title', 'dream'), )->all();
[ { "title": "Dreaming of Jakarta", "year": 1990 }, { "title": "See You in My Dreams", "year": 1996 } ]
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 de documentos deve ser executada no banco de dados de back end ou se deseja retornar apenas os campos de origem armazenados diretamente na 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.
Queries de preenchimento automático
A integração do Laravel fornece o método autocomplete() como método de construção de queries e como método de modelo Eloquent. Você pode usar o método autocomplete() para executar pesquisas de preenchimento automático em documentos das suas coleções. Este método retorna apenas os valores do campo que você especificar como caminho da query.
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
Você deve criar um índice do MongoDB Search com uma configuração de preenchimento automático em sua collection antes de poder executar pesquisas com preenchimento automático. Consulte a seção Criar um índice de pesquisa MongoDB deste guia para saber mais sobre como criar índices de pesquisa.
O código a seguir executa uma query de preenchimento automático da pesquisa MongoDB para a string "jak" no campo title:
$movies = Movie::autocomplete('title', 'jak')->all();
[ "Dreaming of Jakarta", "Jakob the Liar", "Emily Calling Jake" ]
Você também pode passar os seguintes parâmetros opcionais para o método autocomplete() para customizar a query:
Parâmetro opcional | Tipo | 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.