Menu Docs
Página inicial do Docs
/ /

MongoDB Search

Neste guia, você aprenderá a executar uma query de um índice do MongoDB Search e a usar a funcionalidade avançada de pesquisa de texto completo em seus aplicativos do PyMongo. 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 sample_mflix.movies coleção dos conjuntos de dados de amostra do Atlas . Para saber como criar um cluster do MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte Começar a usar o PyMongo.

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

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. Você também pode, opcionalmente, especificar um coletor que agrupa resultados por valores ou faixas. Para visualizar uma tabela de todos os operadores e coletores disponíveis com o MongoDB Search, consulte Usar operadores e coletores em queries do MongoDB Search.

O exemplo a seguir usa o operador compound para combinar vários operadores em uma única consulta. Para saber mais sobre o operador compound, consulte o guia do operador Composto na documentação do MongoDB 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.

client = pymongo.MongoClient("<connection-string>")
result = client["sample_mflix"]["movies"].aggregate([
{
"$search": {
"index": "pymongoindex",
"compound": {
"mustNot": [
{
"text": {
"query": [
"Comedy"
],
"path": "genres"
}
}
],
"must": [
{
"text": {
"query": [
"New York"
],
"path": "title"
}
}
],
}
}
},
{ "$limit": 10 },
{
"$project": {
"_id": 0,
"title": 1,
"score": { "$meta": "searchScore" }
}
}
])
for i in result:
print(i)
{'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, deve usar o MongoDB Vector Search . Para saber mais sobre a Vector Search do MongoDB , consulte a documentação da Vector Search do MongoDB .

Voltar

Executar um comando de banco de dados

Próximo

MongoDB Vector Search

Nesta página