Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Executar queries de texto

Neste guia, você pode aprender a usar o driver Scala para executar query de texto em seus documentos.

Você pode usar uma query de texto para recuperar documentos que contêm um termo ou uma frase em um campo especificado. Um termo contém apenas caracteres não-espaço em branco. Uma frase contém termos separados por qualquer número de caracteres de espaço em branco.

Observação

query de texto exigem um índice de texto nos campos da coleção que você deseja pesquisar. Para aprender a criar índice, consulte o Otimizar query usando índice guia.

Os exemplos neste guia usam a coleção movies no banco de dados sample_mflix dos conjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicativo Scala, crie um MongoClient que se conecte a um Atlas cluster. Em seguida, atribua os seguintes valores às suas variáveis database e collection:

val database: MongoDatabase = mongoClient.getDatabase("sample_mflix")
val collection: MongoCollection[Document] =
database.getCollection("movies")

Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.

Antes de executar uma query de texto, você deve criar um índice de texto na coleção. Um índice de texto especifica um ou mais campos de string para indexar para pesquisa de texto. O exemplo a seguir cria um índice de texto no campo title da coleção movies:

val observable = collection.createIndex(Indexes.text("title"))
Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))

Para encontrar documentos que contenham um termo específico, passe o termo como uma string para o método text() da classe Filters.

O exemplo a seguir conta os documentos que têm o termo "time" no campo title:

val filterTerm = text("time")
collection.countDocuments(filterTerm)
.subscribe((count: Long) => println(count))
146

Para localizar documento que contêm vários termo, separe os termo com espaços na string de pesquisa. O exemplo a seguir conta documento que têm o termo "time" ou o termo "machine" no campo title:

val filterMultiple = text("time machine")
collection.countDocuments(filterMultiple)
.subscribe((count: Long) => println(count))
158

Para localizar documentos que contenham uma frase, coloque-a entre aspas de escape (\") na string de pesquisa.

O exemplo a seguir conta documentos que têm a frase "time machine" no campo title:

val filterPhrase = text("\"time machine\"")
collection.countDocuments(filterPhrase)
.subscribe((count: Long) => println(count))
4

Para excluir documentos que contêm um termo específico, prefixe o termo com um hífen (-) na string de pesquisa. Você deve incluir pelo menos um termo positivo na query.

O exemplo a seguir conta os documentos que contêm o termo "time", mas não o termo "machine":

val filterExclude = text("time -machine")
collection.countDocuments(filterExclude)
.subscribe((count: Long) => println(count))
142

Você pode personalizar o comportamento da query de texto passando um objeto TextSearchOptions como o segundo parâmetro para Filters.text(). A tabela a seguir descreve os métodos que você pode criar para uma instância TextSearchOptions:

Método
Descrição

caseSensitive()

Define se a query de texto diferencia maiúsculas de minúsculas. O padrão é false.
Tipo de parâmetro: Boolean

diacriticSensitive()

Define se a query de texto é sensível a diacríticos. O padrão é false.
Tipo de parâmetro: Boolean

language()

Define a linguagem para a query de texto. O padrão é o default_language do índice de texto. Se nenhuma linguagem for definida, o padrão será "english".
Tipo de parâmetro: String

O exemplo a seguir conta documentos que correspondem a uma pesquisa que diferencia maiúsculas de minúsculas para o termo "Time" no campo title:

val options = TextSearchOptions().caseSensitive(true)
val filterOptions = text("Time", options)
collection.countDocuments(filterOptions)
.subscribe((count: Long) => println(count))
146

Para saber mais sobre a pesquisa de texto, consulte os seguintes recursos no manual do MongoDB Server:

Para saber mais sobre a criação de índices usando o driver Scala, consulte o guia Otimizar query usando índices.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: