Skip to content

Mongodb

Mongodb es una base de datos no relacional, orientada a documentos, de código abierto y de alto rendimiento. Almacena los datos en documentos JSON con un esquema dinámico. Esto significa que puedes almacenar datos en un formato que cambia con el tiempo.

Ventajas de Mongodb

  • Escalabilidad: Mongodb es horizontalmente escalable, lo que significa que puedes agregar más servidores a tu infraestructura para manejar la carga de trabajo adicional.
  • Alto rendimiento: Mongodb es rápido y eficiente en la lectura y escritura de datos.
  • Esquema flexible: Mongodb no requiere un esquema fijo, lo que significa que puedes almacenar datos en cualquier formato.
  • Documentos JSON: Mongodb almacena los datos en documentos JSON, lo que facilita la integración con otras aplicaciones.
  • Replicación y tolerancia a fallos: Mongodb admite la replicación y la tolerancia a fallos, lo que garantiza la disponibilidad de los datos en caso de fallo de un servidor.

Replicacion: Es el proceso de copiar y mantener actualizados los datos en varios servidores para garantizar la disponibilidad y la redundancia de los datos. Tolerancia a fallos: Es la capacidad de un sistema para seguir funcionando en caso de fallo de uno o varios componentes.

Instalación de Mongodb

Sigue la guia oficial de instalación de Mongodb en la documentación oficial.

Asegúrate de seguir los pasos de instalación para la versión de tu sistema operativo.

Asegúrate de que mongodb se está ejecutando:

sudo systemctl start mongod # Iniciar el servicio
sudo systemctl status mongod

(Opcional) Configuración de Mongodb

En el archivo /etc/mongod.conf puedes configurar la dirección IP y el puerto en el que mongodb escucha las conexiones.

net:
  port: 27017
  bindIp: 127.0.0.1

Puedes añadir mas seguridad a tu base de datos creando un usuario y contraseña para acceder a la base de datos.

Añade a tu configuración:

security:
  authorization: enabled

Luego crea un usuario y contraseña para acceder a la base de datos:

mongosh
use admin
db.createUser({ user: "admin", pwd: "tucontraseña", roles: [{ role: "root", db: "admin" }] })

Conexión a Mongodb

Para conectarte a Mongodb, puedes utilizar la interfaz de línea de comandos mongosh o una biblioteca de cliente como mongoose para Node.js.

Para conectarte a Mongodb desde la línea de comandos:

mongosh mongodb://admin:tucontraseña@localhost:27017/admin

El comando anterior contecta a la base de datos admin con el usuario admin y la contraseña tucontraseña en el puerto 27017 de tu localhost.

mongosh mongodb://localhost:27017

Este comando conecta a la base de datos test en el puerto 27017 de tu localhost. La base de datos test es la base de datos por defecto de Mongodb, si no se especifica una base de datos.

Creación de una base de datos y colección

Mongodb usa bases de datos para almacenar los datos y colecciones para agrupar los documentos:

use libros
db.createCollection("sci-fi")
db.scifi.insertOne({ titulo: "Dune", autor: "Frank Herbert" })
db.scifi.insertOne({ titulo: "Neuromancer", autor: "William Gibson" })
db.scifi.insertMany([
  { titulo: "El problema de los cuatro cuerpos", autor: "Liu Cixin" },
  { titulo: "Bosque", autor: "Liu Cixin" }
  ])

db.scifi.find({autor: "Liu Cixin"})
db.scifi.find({titulo: "Dune"})
db.scifi.updateOne({autor: "Liu Cixin"}, { $set: { autor: "Cixin Liu" } })
db.scifi.updateMany({autor: "Liu Cixin", libro: "Bosque"}, { $set: { titulo: "El bosque oscuro" } })
db.scifi.deleteOne({titulo: "Dune"})
db.scifi.deleteMany({autor: "Cixin Liu"})
db.scifi.drop()
db.dropDatabase()

Usuarios

En Mongodb puedes crear usuarios con diferentes roles y permisos para acceder a la base de datos.

La base de datos admin es la base de datos por defecto para la administración de usuarios y roles. Los usuarios creados en la base de datos admin pueden acceder a todas las bases de datos, con los permisos que les hayas asignado.

Tambien puedes crear usuarios en una base de datos específica, con permisos limitados a esa base de datos.

use admin
db.createUser({ user: "admin", pwd: "tucontraseña", roles: [{ role: "root", db: "admin" }] })

Para funcionar con usuarios deberás añadir a tu configuración:

security:
  authorization: enabled

Para crear un usuario con permisos de lectura y escritura en una base de datos específica:

use libros
db.createUser({ user: "invitado", pwd: "1234", roles: [{ role: "readWrite", db: "libros" }] })

Para crear un usuario con permisos de lectura en una base de datos específica:

use libros
db.createUser({ user: "invitado", pwd: "1234", roles: [{ role: "read", db: "libros" }] })

Integración

Mongodb se integra con muchos lenguajes y ecosistemas, como Node.js, Python, Java, Ruby, PHP, C#, entre otros.

Para integrar Mongodb con Node.js, puedes utilizar la biblioteca mongoose junto a express para crear una API RESTful.

npm install mongoose express
const express = require('express')
const mongoose = require('mongoose')

const app = express()
const port = 3000

mongoose.connect('mongodb://localhost:27017/libros', { useNewUrlParser: true, useUnifiedTopology: true })

const libroSchema = new mongoose.Schema({
  titulo: String,
  autor: String
})

const Libro = mongoose.model('Libro', libroSchema)

app.get('/libros', async (req, res) => {
  const libros = await Libro.find()
  res.json(libros)
})

app.post('/libros', async (req, res) => {
  const libro = new Libro(req.body)
  await libro.save()
  res.json(libro)
})

app.listen(port, () => {
  console.log(`Servidor corriendo en http://localhost:${port}`)
})