Visão geral
Índices de campo único são índices com uma referência a um único campo de um documento em uma coleção. Esses índices melhoram a consulta de campo único e o desempenho de classificação. Elas também suportam índices TTL que removem automaticamente documentos de uma collection após um determinado período de tempo ou em um horário especificado.
Ao criar um índice de campo único, você deve especificar os seguintes detalhes:
O campo no qual criar o índice
A ordem de classificação para os valores indexados como crescente ou decrescente
Observação
O índice _id_
padrão é um exemplo de um índice de campo único. Este índice é criado automaticamente no campo _id
quando uma nova coleção é criada.
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 .
Crie um único índice de campo
Utilize o método create_one
para criar um índice de campo único. O exemplo seguinte cria um índice em ordem crescente no campo title
:
# Creates an index on the "title" field collection.indexes.create_one({ title: 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 title
na lista, conforme mostrado na seguinte saída:
# Lists all indexes on the collection puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"title": 1}, "name": "title_1"}
Query de exemplo
O seguinte é um exemplo de uma query coberta pelo índice criado no campo title
:
# Finds a document with the title "Sweethearts" by using the newly created index filter = { title: 'Sweethearts' } doc = collection.find(filter).first if doc puts doc.to_json else puts "No document found" end
{"_id":...,"plot":"A musical comedy duo...", "genres":["Musical"],...,"title":"Sweethearts",...}
Informações adicionais
Para ver exemplos executáveis que demonstram como gerenciar índices, consulte Otimizar queries usando índices.
Para saber mais sobre índices de campo único, consulte Índices de campo único 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: