Visão geral
Neste guia, você aprenderá a executar uma query de um índice do MongoDB Search e usar a funcionalidade avançada de pesquisa de texto completo em seus aplicativos Ruby. Você pode fazer query de um índice de pesquisa usando um estágio de pipeline de agregação $search.
Para saber mais sobre a fase de pipeline $search, consulte o guia $search no manual do MongoDB Server.
Observação
Disponível apenas no Atlas para MongoDB v4.2 e posterior
O $search operador de pipeline de agregação está disponível somente para coleções hospedadas em clusters do MongoDB Atlas 4.2 que executam o MongoDB v ou posterior que são abrangidos por um índice do MongoDB Search. Para saber mais sobre a configuração necessária e a funcionalidade desse operador, consulte a documentação do MongoDB Search.
Dados de amostra
Os exemplos neste guia usam a collection sample_mflix.movies dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte Introdução ao driver Ruby.
Crie um índice de pesquisa 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 do MongoDB Search, consulte o guia MongoDB Search e MongoDB Vector Search Indexes.
Pesquisar seus dados
Para usar o $search agregação pipeline stage, você deve especificar um operador de query do MongoDB Search que indique o tipo de query que você deseja executar. Opcionalmente, você pode usar um coletor para especificar os valores e intervalos da saída da consulta. Para visualizar uma tabela de todos os operadores e coletores disponíveis com o MongoDB Search, 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
genresnão deve conterComedy.O campo
titledeve conter a stringNew York.
A query também inclui as seguintes fases:
$limitpara limitar a saída a 10 resultados.$project, para excluir todos os campos, excetotitlee adicionar um campo chamadoscore.
pipeline = [ { "$search" => { "index" => "index_name", "compound" => { "mustNot" => [ { "text" => { "query" => ["Comedy"], "path" => "genres" } } ], "must" => [ { "text" => { "query" => ["New York"], "path" => "title" } } ] } } }, { "$limit" => 10 }, { "$project" => { "_id" => 0, "title" => 1, "score" => { "$meta" => "searchScore" } } } ] result = collection.aggregate(pipeline) puts result.to_a
{'title': 'New York, New York', 'score': 6.786379814147949} {'title': 'New York', 'score': 6.258603096008301} {'title': 'New York Doll', 'score': 5.381444931030273} {'title': 'Escape from New York', 'score': 4.719935417175293} {'title': 'Autumn in New York', 'score': 4.719935417175293} {'title': 'Sleepless in New York', 'score': 4.719935417175293} {'title': 'Gangs of New York', 'score': 4.719935417175293} {'title': 'Sherlock Holmes in New York', 'score': 4.203253746032715} {'title': 'New York: A Documentary Film', 'score': 4.203253746032715} {'title': 'An Englishman in New York', 'score': 4.203253746032715}
Informações adicionais
Para saber mais sobre os operadores disponíveis do MongoDB Search, consulte o guia Operadores e coletores na documentação do MongoDB Atlas .
Para obter mais informações sobre o MongoDB Search e para exibir mais exemplos de query, consulte a documentação do MongoDB Search.
Se você deseja realizar pesquisas de vetor em seus dados armazenados no Atlas, deverá utilizar o Atlas Vector Search. Para saber mais sobre o MongoDB Vector Search, consulte a documentação do Atlas Vector Search .