John Cardozo
John Cardozo
MongoDB es una base de datos orientada a documentos.
Se clasifica como base de datos NoSQL
Almacena los datos en documentos flexibles con formato JSON
Los campos pueden variar en estructura entre documentos
{
nombre: "Catalina",
edad: 20,
hobbies: ["leer", "correr"],
lugarNacimiento: {
ciudad: "Bogotá",
pais: "Colombia"
}
}
{
nombre: "Valeria",
edad: 7,
lugarNacimiento: {
ciudad: "Bogotá",
}
}
{
nombre: "Emilio",
edad: 10,
hobbies: ["videojuegos"]
}
{
nombre: "Luciana",
edad: 2,
rh: "a+",
padres: {
madre: {
nombre: "Diana"
},
padre: {
nombre: "Julian"
}
}
}
Ejemplos de documentos de la colección Usuarios
Documento embebido
Relacionales
No relacionales
Lenguaje estructurado con esquema predefinido
Esquemas dinámicos con datos no estructurados
Escalables verticalmente
Escalables horizontalmente
Basados en tablas de estructura rígida
Basados en documentos, clave-valor o grafos
SQL
NOSQL
Instancia Local
MongoDB Community Server
Instancia remota: nube
MongoDB Atlas
Consola - comando: mongo
MongoDB Compass
Robo3T
use tareas_db
Usar una BD
show dbs
Mostrar las BD del servidor
show collections
Mostrar las colecciones de la BD
db
Mostrar la BD de trabajo
quit()
Salir de la consola
show users
Mostrar los usuarios
mongo "mongodb+srv://<url>" --username <usuario>
Conexión al servidor
mongo "mongodb+srv://cluster0.0jhhf.mongodb.net" --username usuario_tareas
solo admin
Shell para Mac
mongosh
Clusters
CONNECT
Connect your application
MongoDB Atlas
Seleccionar cualquier DRIVER y VERSION
mongodb+srv://usuario_tareas:<password>@cluster0.0jhhf.mongodb.net/<dbname>?retryWrites=true&w=majority
cadena de conexión
reemplazar <password> y <dbname>
Verificar que el servidor esté configurado para aceptar conexiones remotas: network access
1
2
3
4
5
6
7
Servidor
base de datos
collecciones
inicio del shell
db.createCollection('peliculas')
Crear una colección
db.peliculas.insert(
{
titulo: 'Pulp Fiction',
anio: 1994
})
Insertar un documento en una colección
db.peliculas.insert([
{
titulo: 'Django Unchained',
anio: 2012
},
{
titulo: 'Kill Bill: Volume 1',
anio: 2003
}
])
Insertar varios documentos
db.peliculas.drop()
Eliminar una colección
db.peliculas.find()
Buscar todos los documentos
db.peliculas.find(
{
anio: 2003
}
)
Buscar documentos por criterio
db.peliculas.find({
_id: ObjectId("5fa2cc79bd68fc261e57852e")
})
Buscar documentos por id
db.peliculas.find(
{
anio: {$lt: 2003}
}
)
Buscar documentos con criterio de comparación
lt
db.peliculas.find(
{'titulo': /c/}
)
Buscar documentos por criterio LIKE
películas que contiene la letra 'c'
menor
lte
menor o igual
gt
mayor
gte
mayor o igual
db.peliculas.find(
{
$and: [
{anio: {$lt: 2015}},
{anio: {$gt: 2000}}
]
}
)
Buscar documentos con criterio AND
db.peliculas.find(
{
$or: [
{anio: 1994},
{anio: 2003}
]
}
)
Buscar documentos con criterio OR
db.peliculas.find().count()
Contar documentos
db.peliculas.find().limit(2)
Limitar documentos
db.peliculas.find().sort({
titulo: 1
})
Ordenar documentos
1: ascendente
-1: descendente
db.peliculas.insert(
{
titulo: 'Once upon a Time in Hollywood',
anio: 2019,
director: {
nombres: 'Quentin',
apellidos: 'Tarantino'
}
}
)
Creación de documentos anidados
db.peliculas.find(
{
"director.nombres": "Quentin"
}
)
Buscar documentos con documentos anidados
db.peliculas.insert(
{
titulo: 'The Hateful Eight',
anio: 2015,
director: {
nombres: 'Quentin',
apellidos: 'Tarantino'
},
actores: ['Samuel', 'Kurt', 'Tim']
})
Creación de documentos anidados con arreglos
db.peliculas.find(
{
actores: "Samuel"
}
)
Buscar documentos con un valor en un arreglo
db.peliculas.update(
{ titulo: 'Pulp Fiction'},
{ anio: 1993}
)
Reemplaza TODO el documento
db.peliculas.update(
{ titulo: 'Pulp Fiction' },
{
$set: {
anio: 1993
}
}
)
Si se desea mantener datos previos y no reemplazar todo el documento: $set
Si hay atributos que no existen se crean
!
update solo modifica un documento
db.peliculas.update(
{ titulo: 'Inglorious Bastards' },
{
titulo: 'Inglorious Basterds',
anio: 2009
},
{ upsert: true }
)
Modificar un documento pero si no existe, lo crea
db.peliculas.update(
{ titulo: 'The Hateful Eight' },
{
$unset: {
actores: 1
}
}
)
Eliminar un atributo del documento
db.peliculas.update(
{ titulo: 'Inglorious Basterds' },
{
$rename: {
'anio': 'year'
}
}
)
Renombrar un atributo del documento
db.peliculas.updateMany(
{ director: { $exists: true } },
{ $unset: { director: true } }
)
Elimina un atributo de todos los documentos que cumplan contengan el atributo
db.peliculas.find(
{ director: {$exists: true} }
)
Busca los documentos que tengan un atributo
db.peliculas.updateMany(
{ anio: 1994 },
{
$set:{
anio: 2000
}
}
)
Modifica todos los documentos que cumplan con el criterio
db.peliculas.updateMany(
{
$or: [
{ anio: 2000},
{ anio: 2003}
]
},
{
$set: {
titulo: 'desconocido'
}
}
)
Modifica todos los documentos que cumplan con el criterio OR
db.peliculas.remove(
{ titulo: 'desconocido' }
)
Elimina todos los documentos que cumplan con el criterio
db.peliculas.remove(
{ $or: [
{ anio: 2019},
{ anio: 2015}
]
}
)
Elimina todos los documentos que cumplan con el criterio OR
db.peliculas.find().forEach(
function (documento){
print('Titulo de la pelicula: ' + documento.titulo)
}
)
Itera los documentos e invoca una función sobre cada uno
db.createUser({
user: "john",
pwd: "123",
roles: ["readWrite", "dbAdmin"]
})
Se pueden crear nuevos usuarios si está autenticado con usuario administrador
johncardozo@gmail.com