MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
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 de pesquisa MongoDB 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 uma fase do 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

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 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. Í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 Índices do MongoDB Search e do MongoDB Vector Search.

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.

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 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ê quiser realizar pesquisas vetoriais nos seus dados armazenados no Atlas, deve usar 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