Observe os seguintes conjuntos de dados e o comando executado no banco de dados processo do MongoDB. Coleção: { "_id": 1, "descricao": "Processo trabalhista envolvendo direitos do trabalhador" } { "_id": 2, "descricao": "Contrato de trabalho com cláusulas trabalhistas" } { "_id": 3, "descricao": "Processo administrativo de aposentadoria" } Consulta: db.processo.find({ $text: { $search: "trabalhista" } }) .sort({ score: { $meta: "textScore" } }) Resultado: [ { "_id": 1, "descricao": "Processo trabalhista envolvendo direitos do trabalhador", "score": 1.2 }, { "_id": 2, "descricao": "Contrato de trabalho com cláusulas trabalhistas", "score": 0.9 } ] No Mongosh, para criar um índice visando a otimizar a execução da consulta apresentada com palavra(s) específica(s) em um campo contendo strings, deve-se executar o comando:
- A)db.processo.createIndex({"descricao":"2"})
Errada: "2" não é um tipo válido de índice para busca textual no MongoDB.
- B)db.processo.createIndex({"descricao":"2d"})
Errada: "2d" é índice geoespacial, usado para coordenadas planas, não para texto.
- C)db.processo.createIndex({"descricao":"text"})
Certa: cria um índice textual no campo descricao, adequado para consultas com $text.
- D)db.processo.createIndex({"descricao":"hashed"})
Errada: índice hashed serve para distribuição e buscas por igualdade, não para pesquisa por palavras.
- E)db.processo.createIndex({"descricao":2dsphere },{unique: true })
Errada: 2dsphere é índice geoespacial e ainda vem com unique sem relação com busca textual.
Gabarito: C
Quando a consulta no MongoDB usa $text com uma palavra-chave, ela pede um índice textual, que foi feito exatamente para pesquisar termos dentro de campos do tipo string. É o caso da busca por "trabalhista" na coleção processo: o banco precisa localizar ocorrências de palavras no texto e ainda pode ranquear os resultados por relevância usando o textScore. Isso explica por que o primeiro documento, mais aderente ao termo, aparece com score maior. No MongoDB, a criação do índice textual é feita com o tipo "text" no campo desejado. Assim, o comando db.processo.createIndex({"descricao":"text"}) prepara o banco para consultas como $text e melhora bastante o desempenho dessas buscas por conteúdo. Em outras palavras: não é índice numérico, nem hash, nem geoespacial - aqui o assunto é texto mesmo. As demais opções tentam confundir com tipos de índice usados para outras finalidades. Índice "2" não faz sentido nesse contexto, "2d" e "2dsphere" são relacionados a dados geográficos, e "hashed" é usado para distribuição e certas consultas exatas, não para busca textual. Então, para pesquisa por palavras em um campo string, o caminho certo é o índice textual. Na prática do MongoDB, isso é um recurso nativo e bem documentado para full-text search simples.