No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Agregando indexadores

17/24
Recursos

Una base de datos puede tener incluso millones de documentos, lo que provocar铆a que las consultas sean lentas. Como desarrollador o desarrolladora de software, es tu responsabilidad asegurar la eficiencia de las consultas en tu aplicaci贸n.

C贸mo funcionan los indexadores en MongoDB

MongoDB utiliza el concepto de 鈥淚ndexador鈥 para permitir preseleccionar campos en tus esquemas que sabes que ser谩n utilizados para realizar consultas a trav茅s de ellos y mejorar as铆 la eficiencia de las mismas.

Crear un indexador en los esquemas de Mongoose y NestJS es muy sencillo. Basta con agregar al decorador @Prop() la propiedad { index: true } para indicar que ese campo ser谩 indexado y se realizar谩n consultas a trav茅s de 茅l.

// products/product.entity.ts
export class Product extends Document {

  @Prop({ type: Number, index: true })
  price: number;
}

export const ProductSchema = SchemaFactory.createForClass(Product);
ProductSchema.index({ price: 1, stock: -1 });    // Orden ascendente o descendente de la indexaci贸n

C贸mo crear 铆ndice UNIQUE

Otro tipo de 铆ndice que puedes crear en una propiedad es el Unique para que un campo sea 煤nico en una colecci贸n.

// products/product.entity.ts
export class Product extends Document {

  @Prop({ type: String, unique: true })
  idProducto: string;
}

As铆, el campo idProducto ser谩 煤nico dentro de todos los documentos de la colecci贸n a la cual pertenece. Provocar谩 un error si se quiere ingresar un idProducto ya existente.

Recuerda elegir muy bien los 铆ndices de cada esquema. No puedes seleccionar TODOS los campos como 铆ndices, ya que si todos ellos son importantes, ninguno lo ser谩 y Mongo no priorizar谩 las b煤squedas a trav茅s de ning煤n campo.

Tambi茅n considera que los 铆ndices suelen utilizarse en bases de datos con millones de documentos en una colecci贸n. Si tu colecci贸n tiene unos pocos cientos o incluso miles de documentos, tal vez no sea necesario utilizar 铆ndices.

Contribuci贸n creada por: Kevin Fiorentino (Platzi Contributor).


C贸digo de ejemplo para agregar indexadores

// src/products/entities/product.entity.ts
...
export class Product extends Document {
  ...

  @Prop({ type: Number, index: true }) // 馃憟
  price: number;

}

export const ProductSchema = SchemaFactory.createForClass(Product);
ProductSchema.index({ price: 1, stock: -1 });  // 馃憟

Aportes 2

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Los indexadores admiten la ejecuci贸n eficiente de consultas en MongoDB. Sin indexadores , MongoDB debe realizar un escaneo de la colecci贸n, es decir, escanear cada documento en una colecci贸n, para seleccionar aquellos documentos que coincidan con la declaraci贸n de consulta. Si existe un 铆ndice apropiado para una consulta, MongoDB puede usar el 铆ndice para limitar la cantidad de documentos que debe inspeccionar.

documentacion

Esto tambien es 煤til si se quiere generar una llave unica entre dos campos, la funci贸n recibe un parametro adicional que es un objeto de configuraci贸n as铆 馃憠

ProductSchema.index({ price: 1, stock: -1 }, {unique: true});