Blog de clase Tecnologías para el desarrollo de aplicaciones web

Blog de clase

View on GitHub
31 July 2021

MongoDB Índices y agregación

by Angie Dahiana Vargas Serna

Índices en bases de datos No relacionales:

Los índices son estructuras de datos especiales que almacenan una pequeña parte de datos de la colección en una forma más fácil de recorrer.

Sin índices MongodB realiza un scaneo completo de la colección para encontrar coincidencias y mostrar un resultado, por lo tanto este tipo de búsqueda cuando hay muchos datos puede ser de gran costo computacional debido a que busca por cada colección completa por lo cual es recomendable utilizar índices por categorías más comunes en la búsqueda.

Importante: Definir de la mejor manera los índices necesarios.

Tipos de índices

 `Campo específico:`
db.movies.createIndex({name:1})

 `Compuesto:`
db.movies.createIndex({name:1, year:1})

 `Único:`
db.movies.createIndex({name:1},{unique:true})
Crea un campo único como la cédula.

 `Texto`
db.movies.createIndex({name:"text"},{sipnosis:"text"})
Busca entre cadenas de texto sin importar minúsculas, mayúsculas o tíldes.
Pero para hacer las búsquedas por este índice se hace de la siguiente manera:

db.collections.find({$text:{$search:"palabraBuscar"}})

Solo se puede crear un índice de texto con varios campos

Eliminar índices

db.collections.dropIndex("nameIndex")

Agregación en Mongo

Métodos

1)Pipeline de agregación:

db.collection.aggregate([{$match:{campo: valor}}, $group: {_id : "$year", numeroPeliculas:{$count:{}}} ])

match: Filtro del campo

group: Agrupación

count: Contador // Cúantas películas cumple el filtro

sum: Sumador

Ejemplo lookup:

db.peliculas.aggregate([
    {
        $lookup:{  
        from: "actors",
        localField: "actors._id",
        foreignField: "_id",
        as:"actors"
        }
    }
])

2) Map-Reduce 3) Operaciones de único propósito

MONDO DB COMPASS

Cadena de conexión: mongodb://localhost:27017