Lab Bda S
Lab Bda S
Lab Bda S
Requiere
Excelente Bueno No acept. Puntaje
Criterio de Evaluación mejora
(4pts) (3pts) (0pts) Logrado
(2pts)
Identifica los comandos básicos para
manipular documentos en MongoDB
Adiciona documentos a una base de datos
MongoDB
Modifica documentos en una base de datos
MongoDB
Elimina documentos en una base de datos
MongoDB
Es puntual y redacta el informe
adecuadamente
Bases de Datos Avanzadas
Laboratorio 3: Operaciones CRUD en MongoDB
Objetivos:
Al finalizar el laboratorio el estudiante será capaz de:
● Adicionar documentos a la base de datos MongoDB
● Modificar documentos de la base de datos MongoDB
● Eliminar documentos de la base de datos MongoDB
● Consultar documentos de la base de datos MongoDB
Seguridad:
● Ubicar maletines y/o mochilas en el gabinete del aula de Laboratorio.
● No ingresar con líquidos, ni comida al aula de Laboratorio.
● Al culminar la sesión de laboratorio apagar correctamente la computadora y la pantalla, y ordenar
las sillas utilizadas.
Equipos y Materiales:
● Una computadora con:
● Windows 7 o superior
● Conexión a la red del laboratorio
Procedimiento:
Lab Setup
En el distrito de Jose Luis Bustamante y Rivero se ha inaugurado un nuevo edificio compuesto por 30
departamentos y una playa de estacionamiento privada en la cual, por razones de seguridad, solo
está permitido el estacionamiento de vehículos de los propietarios de los departamentos. El edificio es
totalmente cerrado y cuenta con una única puerta de acceso hacia la playa de estacionamiento, de tal
forma que cada vehículo que ingresa o sale del edificio debe ser registrado en la portería por el
personal de seguridad.
Para que el registro de vehículos funcione correctamente es necesario registrar a cada propietario de
los departamentos así como los vehículos que ellos poseen. Para ello se ha colocado un comunicado
para que los propietarios se registren en portería.
Se nos ha encargado registrar la información de los propietarios y sus vehículos para que además se
puedan registrar los ingresos y salidas de cada vehículo del estacionamiento.
Hemos decidido implementar una base de datos en MongoDB para almacenar la información
indicada.
Al día de hoy, sólo se ha podido empadronar a cinco (5) propietarios y sus vehículos cuya información
se ha incluido en un archivo de script denominado Lab03.js.
Solicite al instructor dicho archivo y adicione su contenido a la base de datos
“NombreApellidoLab03” aplicando el procedimiento visto en el laboratorio anterior.
Verifique que se hayan creado apropiadamente las siguientes dos colecciones:
- propietarios (contiene una colección embebida para almacenar información de los
vehículos).
- registro.
Nota:
2.2. Visualice los nombres, apellidos y el departamento del propietario del vehículo de placa
“U7E-567”:
> db.propietarios.find({"vehiculos.placa": "U7E-567"},
{_id:0, nombres:1, apellidos:1, departamento:1 });
2.3. Visualice los nombres y apellidos de propietarios que tienen vehículos de color “Rojo”:
> db.propietarios.find({"vehiculos.color": "Rojo"},
{_id:0, nombres:1, apellidos:1});
2.4. Visualice los nombres, apellidos, departamento de propietarios así como los números de
placas de sus vehículos correspondientes:
> db.propietarios.find({},{_id:0, nombres:1, apellidos:1, departamento:1,
"vehiculos.placa":1});
2.6. Visualice los nombres y apellidos de propietarios que tienen vehículos de marca “Toyota”:
> db.propietarios.find({"vehiculos.marca": "Toyota"}, {_id:0, nombres:1,
apellidos:1})
2.8. Visualice los números de placa de los vehículos así como los nombres y apellidos de
propietarios de sexo Masculino que tienen vehículos de marca “Toyota” color “Blanco”:
> db.propietarios.find({$and:[{sexo: "M"}, {"vehiculos.marca":
"Toyota"},{"vehiculos.color": "Blanco"}]}, {_id:0, nombres:1,
apellidos:1,"vehiculos.placa":1})
3. Adicionar información
Algunos propietarios que no fueron registrados anteriormente han tenido problemas para ingresar
al edificio. Ante ello un propietario (Administrador de empresas de profesión) decide elaborar una
segunda lista con los datos de sus vecinos más cercanos para que sean incluidos en la relación y
puedan ingresar/salir del edificio sin problemas. Este propietario nos entrega la relación que se
muestra a continuación
Apellid Fecha Esta
Dpto Nombres os Sexo Nac. Teléfono Celular Placa Marca Modelo Año Color do
9590434 201 Blanc
201 Gerardo López M 20-ene-80 35 C5H-908 KIA Sorento 5 o A
201
202 Karla Salinas F 12-jul-90 340077 F7H-897 Toyota Yaris 0 Negro A
Quezad 9990909 201
203 Diario a M 11-ago-87 09 D5Y-555 Hyundai Santa Fe 1 Azul A
Valenzu 9599989 200
204 Cecilia ela F 17-set-70 350101 76 C7P-454 Nissan Sentra 8 Plata A
Fernand 201
205 Dora ez F 25-ene-84 343456 B7L-634 Toyota RAV4 2 Rojo A
9988990 201
206 Carlos Cuellar M 15-ene-88 363609 98 F5H-774 KIA Cerato 5 Azul A
3.1. Adicione la información anterior a la base de datos. Anote los comandos utilizados para
realizar dicho registro
4. Modificar información
Se ha detectado un error en la información entregada por los propietarios y se nos ha alcanzado
la información que debemos corregir como se muestra en la siguiente tabla:
Est
Dpt Nom Sex Fecha a
o bres Apellidos o Nac. Teléfono Celular Placa Marca Modelo Año Color do
Valenzuel 95999897 201
204 Cecilia a F 17-set-70 350101 6 B7L-634 Toyota RAV4 2 Rojo A
200
8
C7P-454 Nissan Sentra 200 Plata A
205 Dora Fernandez F 25-ene-84 343456 E59-666 Toyota Corolla 2 Azul A
4.1. Modifique la información anterior en la base de datos. Anote los comandos utilizados para
realizar dicha actividad
db.propietarios.updateOne({$and:[{_id:9},
{'vehiculos.placa':'C7P-454'}]},{$set:{'vehiculos.$.placa':'B7L-634','vehiculos.$.marca':'Toyot
a','vehiculos.$.modelo':'RAV4','vehiculos.$.anio':2012,'vehiculos.$.color':'Rojo'}})
db.propietarios.updateOne({$and:[{_id:10},
{'vehiculos.placa':'B7L-634'}]},{$set:{'vehiculos.$.placa':'C7P-454','vehiculos.$.marca':'Nissa
n','vehiculos.$.modelo':'Sentra','vehiculos.$.anio':2008,'vehiculos.$.color':'Plata'}})
db.propietarios.updateOne({_id:10},{$push:{vehiculos:{placa:'E59-666',marca:'Toyota',mod
elo:'Corolla',anio:2002,color:'Azul',estado:'A'}}})
Nota: En este caso se ha hecho uso del operador posicional “$” el cual permite acceder a
los diferentes campos del primer elemento de la colección devuelta
4.3. El propietario Gerardo López nos indica que acaba de adquirir un nuevo vehículo KIA
Picanto del 2015 de color Verde con placa V4H-777 y solicita que se agregue su nuevo
vehículo en la base de datos. Utilice el siguiente comando:
> db.propietarios.updateOne({nombres:'Gerardo', apellidos:'Lopez'},
{$push: {vehiculos: {placa:'V4H-777', marca:'KIA', modelo:'Picanto',
anio:2015, color:'Verde'}}})
Nota: En este caso se ha hecho uso del operador “$push” el cual permite adicionar
elementos a un campo de tipo arreglo
4.4. Una semana después, el señor Gerardo López nos indica que ha vendido su auto de placa
C5H-908 y solicita que retiremos de su registro dicho vehículo porque ya no le pertenece.
Para ello utilice el siguiente comando
> db.propietarios.updateOne( {nombres:'Gerardo', apellidos:'Lopez'},
{$pull: {vehiculos: {placa:'C5H-908'}}} );
Nota: En este caso se ha hecho uso del operador “$pull” el cual permite eliminar un
elemento de un campo de tipo arreglo
4.5. La propietaria Karla Salinas indica que acaba se ha cometido un error al registrar el año de
su vehículo el cual corresponde realmente al 2001 y solicita se cambie dicho valor. Anote el
comando que permite realizar dicho cambio:
> db.propietarios.updateOne({nombres:'Karla',
apellidos:'Salinas','vehiculos.anio':2010},{$set:{'vehiculos.$.anio':2001}
})
4.6. El propietario Darío Quezada nos indica que acaba de adquirir un nuevo vehículo Toyota
Corolla del 2010 de color Azul Marino con placa V1W-823 y solicita que se agregue su
nuevo vehículo en la base de datos. Anote el comando utilizado:
> db.propietarios.updateOne({nombres:'Diario',
apellidos:'Quezada'},{$push:{vehiculos:{marca:'Toyota',
modelo:'Morello',anio:2010, color:'Azul Marino', placa:'V1W-823'}}})
4.7. Una semana después, el señor Dario Quezada nos indica que ha vendido su auto de placa
D5Y-555 y solicita que retiremos de su registro dicho vehículo porque ya no le pertenece.
Anote el comando utilizado:
>
db.propietarios.updateOne({nombres:'Diario',apellidos:'Quezada'},{$pull:{v
ehiculos:{placa:'D5Y-555'}}})
Esta consulta busca documentos que cumplan con los criterios dados. Devuelve los
campos "nombres" y "apellidos" del propietario, así como el campo "placa" y el
array completo "vehículos" que coinciden con los criterios de búsqueda. Esto
significa que para cada documento coincidente, mostrará todos los vehículos del
propietario, no solo el que coincida con la condición.
> db.propietarios.find({"vehiculos.color":"Blanco",
"vehiculos.placa":{$regex:/3$/}},
{nombres:1,apellidos:1,
vehiculos:{$elemMatch:{color:'Blanco',
placa:{$regex: /3$/}}}});
Esta consulta utiliza $elemMatch para proyectar solo los elementos del
array "vehiculos" que cumplen con los criterios de búsqueda. Devuelve los
campos "nombres" y "apellidos" del propietario, junto con solo uno de los
vehículos que coinciden con los criterios de búsqueda.
Tarea:
1. Elabore el modelo Entidad Relación para una base datos que permita registrar el inventario de
computadoras de una empresa.
Para el caso de Tecsup, es necesario tener en cuenta lo siguiente:
- Cada computadora tiene asignado un identificador como equipo integral, por ejemplo:
“R3PC01”
- Además cada equipo tiene campos adicionales como fecha de instalación, usuario a cargo
- Es necesario identificar cada componente que contiene el equipo: Monitor, teclado, mouse,
disco duro, lectora CD/DVD, placa madre, procesador, tarjeta de video, tarjeta de red, tarjeta
de sonido.
- Cada componente tiene características específicas: como Marca, modelo, nro. de serie. En
caso del disco duro, tiene Capacidad y Velocidad, En caos del teclado: español o inglés. En
caso de la tarjeta de video: Cantidad de memoria de video, tecnología, otros
2. Elabore un script conteniendo las sentencias necesarias para implementar la base de datos con
algunas colecciones y documentos de ejemplo.
3. Implemente algunas sentencias que permitan consultar información: como por ejemplo:
- Listado de equipos con procesador Intel Core i7
> db.computadoras.find({ procesador: /Intel Core i7/ });
- Equipos que cuentan con Memoria RAM menor a 8 GB
> db.computadoras.find({ memoria_ram: { $lt: 8 } });
- Equipos que se hayan instalado después de una fecha específica
> db.computadoras.find({ fecha_instalacion: { $gt: new Date("2023-01-01") } });
- Otras consultas que usted proponga
Conclusiones:
Indicar las conclusiones que llegó después de los temas tratados de manera práctica en este
laboratorio.
- La adición de documentos permitió la expansión de la base de datos, enriqueciéndola con
más datos relevantes.
- La modificación de documentos facilitó la actualización y ampliación de la información
existente en la base de datos.
- MongoDB ofrece herramientas para gestionar la eliminación de datos de manera eficiente y
segura.
- Las consultas realizadas demostraron la capacidad de MongoDB para recuperar datos
específicos según los criterios de búsqueda establecidos, lo que proporciona flexibilidad y
eficacia en la manipulación de datos almacenados.