MongoDB – Método db.collection.CreateIndex()

En MongoDB, los índices son estructuras de datos especiales que almacenan cierta información relacionada con los documentos, de modo que a MongoDB le resulte fácil encontrar el archivo de datos correcto. Los índices están ordenados por el valor del campo especificado en el índice. Entonces, MongoDB proporciona un método createIndex() para crear uno o más índices en las colecciones. Usando este método podemos crear diferentes tipos de índices como índice de texto, índice de 2dsphere, índice de 2d, etc. Se necesitan tres parámetros: el primero es un documento que contiene los pares de campo y valor donde el campo es la clave de índice y el valor describe el tipo de índice para ese campo y otros son opcionales.

  • Si está creando un índice que ya está presente, entonces MongoDB no vuelve a crear el índice existente.
  • Puede ocultar y mostrar un índice usando el método hideIndex() y unhideIndex().

Sintaxis:

db.Colección.nombre.createIndex(

    claves: {Field_name:1/-1},

    opciones: <documento>,

    commitQuorum : <string o entero>

)

Parámetros:

  • El primer parámetro es un documento que contiene los pares de campo y valor donde el campo es la clave de índice y el valor describe el tipo de índice para ese campo. Para un índice ascendente en un campo, especifique el valor 1 y para un índice descendente, especifique el valor -1.
  • Otros son opcionales.

Parámetros opcionales:

  • Opciones: Es un conjunto de opciones que controla la creación del índice. El tipo de este parámetro es documento.
  • commitQuorum: es el número mínimo de miembros del conjunto de réplicas de votación que contienen datos.

Opciones:

En el método createIndex(), el documento de opciones contiene un conjunto de opciones que controla la creación del índice. Las siguientes opciones están disponibles para todos los tipos de índice a menos que se especifique lo contrario y estas opciones son opcionales:

  • background: el tipo de este parámetro es booleano y background: true indica a MongoDB que cree el índice en segundo plano. Las compilaciones en segundo plano no bloquean las operaciones en la colección. MongoDB ignora la opción de fondo si se especifica.
  • único: el tipo de este parámetro es booleano y especifique verdadero para crear un índice único. El valor predeterminado es falso. Crea un índice único para que la colección no acepte la inserción o actualización de documentos donde el valor de la clave del índice coincide con un valor existente en el índice.
  • name: Es el nombre del índice. El tipo de este parámetro es string. Si no se especifica, MongoDB genera un nombre de índice concatenando los nombres de los campos indexados y el orden de clasificación.
  • PartialFilterExpression: El tipo de este parámetro es un documento. Si se especifica, el índice solo hace referencia a los documentos que coinciden con la expresión del filtro.
  • disperso: el tipo de este parámetro es booleano. Si es verdadero, el índice solo hace referencia a documentos con el campo especificado. El valor predeterminado es falso.
  • expireAfterSeconds: el tipo de este parámetro es un número entero. Especifica un valor, en segundos como un TTL para controlar cuánto tiempo MongoDB retiene los documentos en esta colección.
  • oculto: El tipo de este parámetro es booleano. Es una bandera que determina si el índice está oculto para el planificador de consultas o no. Porque un índice oculto no se evalúa como parte de la selección del plan de consulta. El valor predeterminado de este parámetro es falso.
  • storageEngine: El tipo de este parámetro es un documento. Permite a los usuarios configurar el motor de almacenamiento por índice al crear un índice.

Algunos índices pueden tener opciones adicionales que se especifican para ese tipo solo como:

Para índices de texto:

Todos estos parámetros son opcionales:

  • pesos : Es de tipo documento y contiene los pares de campo y peso para índice de texto. El valor predeterminado de este parámetro es 1.
  • default_language: Es de tipo string y especifica el idioma que determina la lista de palabras vacías y las reglas para lematizador y tokenizador.
  • language_override: es de tipo string y especifica el nombre de los campos en el documento que contiene el idioma de reemplazo para el documento.
  • textIndexVersion: Es de tipo entero y especifica el número de versión del índice de texto.

Para índices de 2dsphere:

2dsphereIndexVersion: es de tipo entero y especifica el número de versión del índice 2dsphere. Es un parámetro opcional.

Para índices 2d:

Todos estos parámetros son opcionales:

  • bits: es de tipo entero y especifica el número de precisión del valor geohash almacenado de los datos de ubicación. El valor predeterminado de este parámetro es 26.
  • min: es de tipo numérico y especifica el límite inferior inclusivo para los valores de longitud y latitud. El valor predeterminado de este parámetro es -180.0.
  • max: es de tipo numérico y especifica el límite superior inclusivo para los valores de longitud y latitud. El valor predeterminado de este parámetro es -180.0.

Para índices geoHaystack:

bucketSize: Es de tipo numérico y especifica el número de unidades dentro de las cuales agrupar los valores locales. El valor de este parámetro debe ser mayor que 0. 

Para índices comodín:

wildcardProjection: es de tipo documento y permite a los usuarios incluir o excluir rutas de campos específicos del índice de comodines. Solo es válido si está creando un índice comodín. Es un parámetro opcional.

Ejemplos:

En los siguientes ejemplos, estamos trabajando con:

Base de datos: gfg

Colecciones: estudiante

Documento: Tres documentos contienen nombre y el idioma en el que están interesados.

  • Crear un índice sin opción: 
db.student.createIndex({name:1})

Aquí, creamos un índice ascendente en el campo único (es decir, nombre) sin opciones.

  • Cree un índice descendente en el idioma de un solo campo:
db.student.createIndex({language:-1})

Aquí, creamos un índice descendente en el campo único (es decir, idioma).

  • Cree un índice en los múltiples campos:
 db.student.createIndex({name:1,language:-1})

Aquí, creamos un índice en los campos múltiples (es decir, un índice ascendente en el nombre y un índice descendente en el campo de idioma) usando el método createIndex().

  • Creando un índice único usando opciones:
db.student.createIndex({name:1},{unique:true})

Aquí, estamos creando un índice único para que la colección no acepte la inserción o actualización de documentos donde el valor de la clave del índice coincide con un valor existente en el índice.

  • Creación de un índice comodín en una ruta de un solo campo:

En primer lugar, insertamos un documento más en la colección de estudiantes que contiene el campo de rama.

Ahora creamos un índice comodín en una sola ruta de campo:

db.student.createIndex({"branch.$**":1})

Aquí, creamos un índice comodín en el campo de la rama usando el método createIndex().

Publicación traducida automáticamente

Artículo escrito por nikhilchhipa9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *