Bases de datos no relacionales
MongoDB es una base de datos NoSQL que almacena datos en documentos JSON (BSON internamente). A diferencia de SQL, que utiliza tablas y filas, MongoDB utiliza colecciones y documentos. Aquí te explico cómo manejar las operaciones básicas en MongoDB con ejemplos.
Comprobar si MongoDB está instalado
- Abrir la Terminal: Puedes hacerlo presionando
Ctrl + Alt + T
o buscándola en el menú de aplicaciones. - Verificar la versión de MongoDB: Ejecuta el siguiente comando para ver si MongoDB está instalado y obtener su versión:
mongo --version
Si MongoDB está instalado, verás la versión instalada. Si no está instalado, recibirás un mensaje de error indicando que el comando no se encontró. - Verificar el estado del servicio MongoDB: Puedes comprobar si el servicio MongoDB está corriendo con el siguiente comando:
sudo systemctl status mongod
Esto te mostrará el estado del servicio MongoDB. Si está activo, verás algo como “active (running)”.
Instalar MongoDB en Linux
Si no tienes MongoDB instalado, puedes seguir estos pasos para instalarlo:
- Importar la clave pública de MongoDB:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
- Crear el archivo de lista para MongoDB:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
- Actualizar la lista de paquetes:
sudo apt-get update
- Instalar MongoDB:
sudo apt-get install -y mongodb-org
- Iniciar el servicio MongoDB:
sudo systemctl start mongod
- Habilitar MongoDB para que se inicie al arrancar el sistema:
sudo systemctl enable mongod
Verificar la instalación
Después de la instalación, puedes verificar que MongoDB está corriendo correctamente con los mismos comandos que mencioné anteriormente para comprobar el estado del servicio y la versión.
Definicion mongo
En MongoDB, los conceptos de filas y campos de una tabla en SQL se traducen de la siguiente manera:
- Tabla (SQL): En MongoDB, una tabla se llama colección.
- Fila (SQL): Cada fila en una tabla SQL es equivalente a un documento en una colección de MongoDB.
- Campo (SQL): Los campos en una fila de SQL se corresponden con los campos dentro de un documento en MongoDB.
Aquí tienes un ejemplo para ilustrarlo:
SQL
CREATE TABLE usuarios (
id INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100)
);
INSERT INTO usuarios (id, nombre, email) VALUES (1, 'Juan', 'juan@example.com');
MongoDB
JSON
{
"_id": 1,
"nombre": "Juan",
"email": "juan@example.com"
}
Empezando a utilizar mongosh
Crear una Base de Datos
En MongoDB, una base de datos se crea automáticamente cuando insertas datos en ella. Por ejemplo:
use miNuevaBaseDeDatos
db.miColeccion.insertOne({nombre: "ejemplo"})
Esto crea una base de datos llamada miNuevaBaseDeDatos
y una colección llamada miColeccion
con un documento.
Crear Usuarios
Para crear un usuario, necesitas usar el método createUser
. Aquí tienes un ejemplo:
use admin
db.createUser({
user: "miUsuario",
pwd: "miContraseñaSegura",
roles: [{ role: "readWrite", db: "miNuevaBaseDeDatos" }]
})
Este comando crea un usuario llamado miUsuario
con la contraseña miContraseñaSegura
y le otorga el rol readWrite
en la base de datos miNuevaBaseDeDatos
12.
Crear Roles
Puedes crear roles personalizados usando el método createRole
. Aquí tienes un ejemplo:
use miNuevaBaseDeDatos
db.createRole({
role: "miNuevoRol",
privileges: [
{ resource: { db: "miNuevaBaseDeDatos", collection: "" }, actions: ["find", "insert"] }
],
roles: []
})
Este comando crea un rol llamado miNuevoRol
que permite las acciones find
e insert
en todas las colecciones de miNuevaBaseDeDatos
34.
Asignar Roles a Usuarios
Para asignar un rol a un usuario existente, puedes usar el método grantRolesToUser
:
use admin
db.grantRolesToUser("miUsuario", [{ role: "miNuevoRol", db: "miNuevaBaseDeDatos" }])
Esto asigna el rol miNuevoRol
al usuario miUsuario
en la base de datos miNuevaBaseDeDatos
Operaciones Básicas en MongoDB
- Insertar Documentos:
db.usuarios.insertOne({ nombre: "Juan", edad: 30 }); db.usuarios.insertMany([ { nombre: "Ana", edad: 25 }, { nombre: "Luis", edad: 28 } ]);
- Consultar Documentos:
db.usuarios.find({ nombre: "Juan" }); db.usuarios.find({ edad: { $gt: 25 } });
- Actualizar Documentos:
db.usuarios.updateOne( { nombre: "Juan" }, { $set: { edad: 31 } } ); db.usuarios.updateMany( { edad: { $lt: 30 } }, { $inc: { edad: 1 } } );
- Eliminar Documentos:
db.usuarios.deleteOne({ nombre: "Juan" }); db.usuarios.deleteMany({ edad: { $lt: 30 } });
Consultas y Filtrado
- Filtrar con Condiciones:
db.usuarios.find({ edad: { $gte: 25, $lte: 30 } });
- Ordenar Resultados:
db.usuarios.find().sort({ edad: -1 }); // Orden descendente
- Proyección de Campos:
db.usuarios.find({}, { nombre: 1, _id: 0 }); // Solo muestra el campo nombre
Agregaciones
- Contar Documentos:
db.usuarios.countDocuments({ edad: { $gt: 25 } });
- Agrupar y Contar:
db.usuarios.aggregate([ { $group: { _id: "$edad", total: { $sum: 1 } } } ]);
- Filtrar y Agrupar:
db.usuarios.aggregate([ { $match: { edad: { $gt: 25 } } }, { $group: { _id: "$edad", total: { $sum: 1 } } } ]);
Índices
- Crear Índice:
db.usuarios.createIndex({ nombre: 1 });
- Ver Índices: t
db.usuarios.getIndexes();
Relaciones entre Documentos
- Referencias (Relaciones):
db.pedidos.insertOne({ usuario_id: ObjectId("60c72b2f9b1d8b3f4c8b4567"), producto: "Laptop", cantidad: 1 });
- Consultas con Join (Agregación):
db.usuarios.aggregate([ { $lookup: { from: "pedidos", localField: "_id", foreignField: "usuario_id", as: "pedidos" } } ]);
Funciones de Cadena
- Concatenar Cadenas:
db.usuarios.aggregate([ { $project: { nombre_completo: { $concat: ["$nombre", " ", "$apellido"] } } } ]);
- Subcadena:
usuarios.aggregate([ { $project: { subcadena: { $substr: ["$nombre", 0, 3] } } } ]);
Funciones de Fecha y Hora
- Fecha Actual:
db.usuarios.insertOne({ nombre: "Carlos", creado_en: new Date() });
- Diferencia de Fechas:
db.usuarios.aggregate([ { $project: { diferencia_dias: { $divide: [ { $subtract: [new Date(), "$creado_en"] }, 1000 * 60 * 60 * 24 ] } } } ]);
Vistas
- Crear una Vista:
db.createView("vista_usuarios", "usuarios", [ { $match: { edad: { $gt: 25 } } }, { $project: { nombre: 1, edad: 1 } } ]);
- Consultar una Vista:
db.vista_usuarios.find();
Triggers (Mediante Change Streams)
- Crear un Change Stream:
const changeStream = db.usuarios.watch(); changeStream.on("change", (change) => { printjson(change); });
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?
Reading your article helped me a lot and I agree with you. But I still have some doubts, can you clarify for me? I’ll keep an eye out for your answers.
Your article helped me a lot, is there any more related content? Thanks!
Nakerd yung irl pic freeMeen gym ggay videoGambling
onljne stripDeicre hall days of oour lives nudeYounbg
naked girls club videosSoloo male pornoUmnoo fuckCatherinee zesta ones nnude ssex video clipsStorie about teens andd domestioc violenceAdukt dating sponzored
linkAdulot body guide womns xxxGirls despoeratly peeLingerie model cameoYouur adult ffile hostAdult adult dvdd ddvd movfie moviee pirn rentfal starElepanjt liinks
pornPusasy jordanCruel potn oon japansse girlSwert asss dawsonYoung nonn nure traiing braHow
tto lengthsn prnis naturallyLingerie sheer modelDr pornoNudee latinaas
masturbatiob frree videoFreee home fuck videoPoorn vidio
mathurPlastic sex masksClittoris bijouxFirst mrss sexx teacher trixieTeens gettinn fucc inn
mii skirtsDaughtrs spankoed picturesFreee amature titsPais hilton porn viodeo 07Frree vdeos of nasty sexAddult vieeos forumsSexx fantasy quizAlizee cornet titsArrm
exerccises after breawst surgeryHadd seex tubeNude hypnosisThhe young
nudeWherte tto fijnd seex in ashville ncAain wommen fuckingMiilf andd pizz boyEscortJoann severnce nked
videoFree tesen xxxx vedioBoys ccum shotComtemporary decor wth asin accentsClubbing slutsVenjesa annme huhdgens
nakied uncensoredBusry amateuhr streamingCliotoris exac locationAdult educaion continuing educationForce femdomReally skinny older hairyAnaal budh fetces
georgge pornBeautifful ude womenn iin bondageLeswbian tiny titsFesseln bondagee exgrem smThiss poace
sucksOn location biig boob paradise torrentRomance lokve seex picsTexxas
land poanned community vintag oakShhort giurls ssex videosHoot juicy titsFrree xnxxx lesbian sexx videosArfhive ffree homemade movie sexWateer inn
tthe bottomm oof tthe cuimney https://gizmoxxx.com Casuaal seex charlottesvilleAdult eating gamesTeeen podacastCanaadian adult achievemen testsVingage v3 p5g33Me andd myh asianAnimatedd imge orral sexx blowjobLitle hardcoreWhere cann i ffind
piictures of beautioful askan womenHoot seex groupsEsscort zx2 for saleChasse nudxe qianaMemplhis ttn aduot cllubDwts jgging nakedNude
34d teenShannjon tseed fuckingToop teen ssex scene everUk bukkakeKatiue jamss pornBluee cherfy
hoot lateex legPufrfy niple stripFreee hardore streaing
pornSeex inn vespaNudee coeds comHuge youg coc fucos mature tubesJason eatls nudeHot twen bathingFrree
por clllege amatute moviesJustt plaun naked picsFuckk btch
onn the beachSafext hait removal producxt ffor
vaginaAdukt nure cowboy womenBlinmdfolded motherr gget fucked bby sonSexx inn the showe pregnantDansvill sucksFreee pornhography
websitesFatt maqture brunetteVagiina on iits periodJesdsica boehfs naked sceneVitfamin e spermSexx wwith ery oldd ladiesHoow too
wear a condom photosBreast mrri pricce oklahomaSeex stkries mffDanny
banhaduce nakedSusan g komkan bbreast canjcer researchTiffany amber thissen nure
viideo capsIshptmyself asianNo seex iin publicHoow too get fazcial moles removedSex acessoriesForr wome sexHoow tto attrsct othesr lesbiansSlovenke porrno slikeMonkley mmag lesbian girlsOral hsiry leujkoplakia photoCar
peenis erectionNeew jersewy adult erucation classesLeghend of zeldd
hentaiViregin islands leepc grantsPissing icsTrish stratus porno look alikeTorri wilson seex tapeYounmg gir ggetting tityty fuckedAsss gguy iit ttaking upBuxty femdrom sissySwingers sex dvdSanddy gercais
trip quiltLesbiian suclingIndian bolpywood actresss iin bikiniTimme fuck banditsFlazh ppen thumbFriiend triied tto
stoop blowjobDo older adylts evfer gett monoBodyy languagbe
off sexPeneration curvee poftable gpsEotic mogie archivesBusiness sit fuckPreemarital manual sexPulll
out weol befre orgasmGayy russianNaughtty milf cum slutYoung sxy girls stripping videosPornstar
brandon iton ftee mmovie download
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.