En aquest tema, explorarem els diferents tipus d'índexs que MongoDB ofereix per optimitzar les consultes i millorar el rendiment de la base de dades. Els índexs són estructures de dades especials que emmagatzemen una petita part de les dades de la col·lecció en un format fàcil de cercar. Això permet a MongoDB executar consultes de manera més eficient.

Índexs Bàsics

Índex Únic

Un índex únic assegura que els valors de l'índex siguin únics en tota la col·lecció. Això és útil per a camps que han de tenir valors únics, com ara identificadors d'usuari o adreces de correu electrònic.

// Crear un índex únic en el camp "email"
db.users.createIndex({ email: 1 }, { unique: true });

Índex Compost

Un índex compost inclou més d'un camp. Això és útil per a consultes que filtren o ordenen per múltiples camps.

// Crear un índex compost en els camps "lastName" i "firstName"
db.users.createIndex({ lastName: 1, firstName: 1 });

Índexs Especials

Índex de Text

Els índexs de text permeten la cerca de text complet en camps de cadena. Són útils per a aplicacions que necessiten funcionalitats de cerca avançada.

// Crear un índex de text en el camp "description"
db.products.createIndex({ description: "text" });

Índex Geoespacial

Els índexs geoespacials permeten emmagatzemar i consultar dades de coordenades geogràfiques. Són útils per a aplicacions que treballen amb ubicacions, com ara mapes o serveis de lliurament.

// Crear un índex geoespacial en el camp "location"
db.places.createIndex({ location: "2dsphere" });

Índex de Hash

Els índexs de hash distribueixen els valors de l'índex de manera uniforme. Són útils per a consultes d'igualtat en camps amb valors molt dispersos.

// Crear un índex de hash en el camp "userId"
db.users.createIndex({ userId: "hashed" });

Índexs Multiclau

Els índexs multiclau permeten indexar camps que contenen matrius. MongoDB crea una entrada d'índex per a cada element de la matriu.

// Crear un índex multiclau en el camp "tags"
db.articles.createIndex({ tags: 1 });

Índexs Parcials

Els índexs parcials permeten indexar només els documents que compleixen una condició específica. Això pot reduir la mida de l'índex i millorar el rendiment.

// Crear un índex parcial en el camp "status" només per a documents amb "status" igual a "active"
db.orders.createIndex({ status: 1 }, { partialFilterExpression: { status: "active" } });

Índexs de Cobertura

Un índex de cobertura conté tots els camps necessaris per a una consulta, permetent a MongoDB satisfer la consulta només amb l'índex, sense accedir als documents.

// Crear un índex de cobertura en els camps "username" i "email"
db.users.createIndex({ username: 1, email: 1 });

Exercicis Pràctics

Exercici 1: Crear un Índex Únic

Crea un índex únic en el camp username de la col·lecció users.

// Solució
db.users.createIndex({ username: 1 }, { unique: true });

Exercici 2: Crear un Índex Compost

Crea un índex compost en els camps category i price de la col·lecció products.

// Solució
db.products.createIndex({ category: 1, price: 1 });

Exercici 3: Crear un Índex de Text

Crea un índex de text en el camp content de la col·lecció posts.

// Solució
db.posts.createIndex({ content: "text" });

Exercici 4: Crear un Índex Geoespacial

Crea un índex geoespacial en el camp coordinates de la col·lecció locations.

// Solució
db.locations.createIndex({ coordinates: "2dsphere" });

Conclusió

Els índexs són una eina poderosa per millorar el rendiment de les consultes a MongoDB. Conèixer els diferents tipus d'índexs i com utilitzar-los adequadament pot marcar una gran diferència en l'eficiència de la teva base de dades. En el proper tema, explorarem el marc d'agregació de MongoDB, que permet realitzar operacions de processament de dades més complexes.

© Copyright 2024. Tots els drets reservats