Menu Docs
Página inicial do Docs
/ /

Executar uma query de pesquisa do MongoDB

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.

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.

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.

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 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.

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}

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 .

Voltar

Geoespacial

Nesta página