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:
(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.
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:
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:
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
.
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:
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.
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}`)
})