Skip to content

Latest commit

 

History

History
99 lines (82 loc) · 3.95 KB

README.md

File metadata and controls

99 lines (82 loc) · 3.95 KB

MongoDB

Pre-requisitos de la sesión en vivo

  • Tener instalado Docker
  • En caso de no tener instalado Docker, tener instalado MongoDB
  • Revisar los conceptos básicos:

Temario

SQL vs NoSQL

Referencias:

Conceptos básicos

Documentos y colecciones en español

Primeros pasos

Referencias

Comandos

  • Levantar instancia de MongoDB docker run --name mongodb -d mongo

  • Conectarse a MongoDB docker exec -it mongodb mongosh

  • Mostrar bases de datos show dbs

  • Crear / Usar base de datos use wizeline_baz_db

  • Mostrar base de datos en uso db

  • Insertar documentos

    • Insertar un documento db.proyecto.insertOne({"nombre":"workshop"})

    • Insertar multiples documentos db.proyectos.insertMany([ { nombre: "Proyecto multiple", responsables: ["CTO", "TL"], tipo: "multiple" }, { nombre: "Proyecto cancelado" }])

  • Datos de ejemplo

Sakila es un esquema de ejemplo de MySQL que se publicó hace algunos años. Se basa en un sistema de alquiler de DVD. En este repositorio se agregaron los datos publicados en esa base de datos Para importar estos datos se pueden utilizar los siguientes comandos:

  • docker cp sakila/customers.json mongodb:/tmp/customers.json
  • docker cp sakila/films.json mongodb:/tmp/films.json
  • docker cp sakila/stores.json mongodb:/tmp/stores.json
  • docker exec mongodb mongoimport -d sakila -c customers --file /tmp/customers.json
  • docker exec mongodb mongoimport -d sakila -c films --file /tmp/films.json
  • docker exec mongodb mongoimport -d sakila -c stores --file /tmp/stores.json

Operaciones CRUD

Referencia: Operaciones CRUD

  • Consultar documentos
    • Consultar sin filtros db.proyectos.find()

    • Consultar con filtros

db.proyectos.find({"cantidad": 1, "tipo": "single"})
db.proyectos.find({$or: [{"cantidad": 1}, {"tipo": "multiple"}]})
  • Actualizar documentos
    • Actualizar un documento
db.proyectos.updateOne({ cantidad: 1 }, { $set: { tipo: "prueba" } })
  • Actualizar multiples documentos
db.proyectos.updateMany( { presupuesto: { $ne: 100 } }, { $set: { presupuesto: 100 } })
  • Eliminar documentos
    • Eliminar todos los documentos db.proyectos.deleteMany({})

    • Eliminar documentos filtrados db.proyectos.deleteMany({ cantidad: 1 })

Modelos y esquemas

Referencia: MongoDB Arquitectura y modelo de datos

Índices

Referencia: MongoDB: creación y utilización de índices

Hashing

Referencia: dbHash

Replica Set

Referencia: Replication

Mejores Practicas de Diseño

Referencia: Diseño