Overview
Índices de un solo campo son índices con una referencia a un solo campo de un documento en una colección. Estos índices mejoran la performance de query y ordenación en un único campo. También admiten Índices TTL que remueven documentos automáticamente de una colección después de un cierto período de tiempo o a una hora específica.
Cuando se crea un índice de campo único, se deben especificar los siguientes detalles:
El campo en el que crear el índice
El orden de clasificación de los valores indexados puede ser ascendente o descendente.
Nota
El índice _id_ por defecto es un ejemplo de índice de campo único. Este índice se crea automáticamente en el campo _id cuando se crea una nueva colección.
Datos de muestra
Los ejemplos de esta guía utilizan la colección movies en la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación Ruby, crea un objeto Mongo::Client que se conecte a un clúster de Atlas y asigna los siguientes valores a tus variables database y collection:
database = client.use('sample_mflix') collection = database[:movies]
Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta la guía Comenzar con Atlas.
Crear un índice de campo único
Utiliza el método create_one para crear un índice de campo único. El siguiente ejemplo crea un índice en orden ascendente en el campo title:
# Creates an index on the "title" field collection.indexes.create_one({ title: 1 })
Verificar la Creación del Índice
Puedes verificar que el índice se creó al listar los índices en la colección. Deberías ver un índice para title en la lista, como se muestra en la siguiente salida:
# Lists all indexes on the collection puts collection.indexes.collect(&:to_json)
{"v": 2, "key": {"title": 1}, "name": "title_1"}
query de ejemplo
A continuación, se muestra un ejemplo de una query que está cubierta por el índice creado en el 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",...}
Información Adicional
Para ver ejemplos ejecutables que demuestran cómo gestionar índices, consulte Optimizando consultas utilizando índices.
Para aprender más sobre los índices de campo único, consulta Índices de campo único en el manual de MongoDB Server.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API: