Visão geral
Os índices compostos contêm referências a vários campos dentro dos documentos de uma collection, melhorando o desempenho de query e classificação.
Ao criar um índice composto, você deve especificar os seguintes detalhes:
Os campos nos quais criar o índice
A ordem de classificação para cada campo (crescente ou decrescente)
Dados de amostra
Os exemplos deste guia usam a coleção movies
no banco de dados sample_mflix
dosconjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação Ruby, crie um objeto Mongo::Client
que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database
e collection
:
database = client.use('sample_mflix') collection = database[:movies]
Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Criar um índice composto
Utilize o método create_one
para criar um índice composto. O exemplo a seguir cria um índice em ordem decrescente no campo runtime
e em ordem crescente no campo year
:
collection.indexes.create_one({ runtime: -1, year: 1 })
Verificar criação do índice
Você pode verificar se o índice foi criado listando os índices na collection. Você deve ver um índice para runtime
e year
na lista, conforme mostrado na seguinte saída:
puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"runtime": -1, "year": 1}, "name": "runtime_-1_year_1"}
Query de exemplo
O seguinte é um exemplo de uma consulta coberta pelo índice criado nos campos runtime
e year
:
filter = { '$and' => [ { runtime: { '$gt' => 90 } }, { year: { '$gt' => 2005 } } ] } doc = collection.find(filter).first if doc puts doc.to_json else puts "No document found" end
{"_id":...,"runtime": 91,...,"title": "Monster House",...,"year": 2006,...}
Informações adicionais
Para ver exemplos executáveis que demonstram como gerenciar índices, consulte Otimizar queries usando índices.
Para saber mais sobre índices compostos, consulte Índices compostos no manual do MongoDB Server .
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: