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 neste guia usam a collection movies no banco de dados sample_mflix dos conjuntos 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_jsonelse puts "No document found"endInformações adicionais
Para exibir 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: