Está en la página 1de 21

Diseño de Software e

Integración de Sistemas

BASES DE DATOS AVANZADAS

LABORATORIO N° 03

Operaciones CRUD en MongoDB

Alumno(s): Félix Arturo García Mestas Nota

Grupo: A Ciclo: III

Requiere No
Excelente Bueno Puntaje
Criterio de Evaluación mejora acept.
(4pts) (3pts) Logrado
(2pts) (0pts)
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

Equipos y Materiales:

• Una computadora con:


• Windows 7 o superior
• Conexión a internet

Procedimiento:
Lab Setup

1. Inicio del equipo


1.1. Encender el equipo
1.2. Inicie el Shell de MongoDB y crear una base de datos de nombre: Lab03

Descripción del escenario propuesto:

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 “Lab03” 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:
- En este caso se usará una colección de vehículos embebida en la colección propietarios
porque la cantidad de vehículos asociada a cada propietario es pequeña (se cree que no
excederá de 20 vehículos a lo largo el tiempo).
- Para el registro de entradas y salidas de cada vehículo se ha considerado el uso de una
nueva colección porque se registrará una gran cantidad de entradas y salidas de cada
vehículo a lo largo del tiempo.

A continuación se muestra el diagrama entidad relación de la base de datos:

Guía de Laboratorio No 3 Pág. 2


Bases de Datos Avanzadas

Propietarios Vehículos Registro

- id - placa - fecha
- nombres - marca - placa
- apellidos - color - movimiento
- sexo - estado
- departamento
- teléfono
- celular
- estado

2. Consulta de la información actual


2.1. Visualice los vehículos del usuario de apellidos: “Salas Valverde”:
> db.propietarios.find({apellidos:"Salas Valverde"},{vehiculos:1});

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});

Guía de Laboratorio No 3 Pág. 3


Bases de Datos Avanzadas
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});

Guía de Laboratorio No 3 Pág. 4


Bases de Datos Avanzadas

2.5. Visualice los documentos contenidos en la colección registro:


1.
2. db.registro.find();
3.
[
{
"_id": {
"$oid": "6317bec884c0c99544f70658"
},
"fecha": "2016-01-01T08:05:30",
"placa": "A40-345",
"movimiento": "Salida"
},
{
"_id": {
"$oid": "6317bec884c0c99544f70659"
},
"fecha": "2016-01-01T13:25:30",
"placa": "A40-345",
"movimiento": "Entrada"
},
{
"_id": {
"$oid": "6317bec884c0c99544f7065a"
},
"fecha": "2016-01-01T08:15:20",
"placa": "C3P-123",
"movimiento": "Salida"
},
{
"_id": {
"$oid": "6317bec884c0c99544f7065b"
},
"fecha": "2016-01-01T13:25:30",
"placa": "C3P-123",
"movimiento": "Entrada"
},
{
"_id": {
"$oid": "6317bec884c0c99544f7065c"
},
"fecha": "2016-01-01T20:12:20",
"placa": "C3P-123",
"movimiento": "Salida"
}
]

Guía de Laboratorio No 3 Pág. 5


Bases de Datos Avanzadas
3.1. Visualice los nombres y apellidos de propietarios que tienen vehículos de marca “Toyota”:
1.
2. db.propietarios.find(
3. {"vehiculos.marca":"Toyota"},
4. {}
5. );
6.
[
{
"_id": 1,
"nombres": "Juan",
"apellidos": "Salas Valverde",
"sexo": "M",
"departamento": "101",
"telefono": "232425",
"celular": "959988770",
"estado": "A",
"vehiculos": [
{
"placa": "A40-345",
"marca": "Nissan",
"color": "Rojo",
"estado": "A"
},
{
"placa": "B5H-345",
"marca": "Toyota",
"color": "Blanco",
"estado": "A"
}
]
},
{
"_id": 2,
"nombres": "Ana",
"apellidos": "Diaz Quequezana",
"sexo": "F",
"departamento": "102",
"telefono": "256565",
"celular": "950099887",
"estado": "A",
"vehiculos": [
{
"placa": "C3P-123",
"marca": "Nissan",
"color": "Rojo",
"estado": "A"
},
{
"placa": "D4T-123",
"marca": "Toyota",
"color": "Blanco",
"estado": "A"
Guía de Laboratorio No 3 Pág. 6
Bases de Datos Avanzadas
},
{
"placa": "E5H-123",
"marca": "Chevrolet",
"color": "Gris",
"estado": "A"
}
]
},
{
"_id": 5,
"nombres": "Marco",
"apellidos": "Zeballos Lazarte",
"sexo": "M",
"departamento": "105",
"telefono": "288778",
"celular": "951234567",
"estado": "A",
"vehiculos": [
{
"placa": "T6Y-678",
"marca": "Toyota",
"color": "Beige",
"estado": "A"
}
]
}
]

6.1. Visualice los nombres, apellidos, departamento de propietarios, así como los números de
placa, marca y color de sus vehículos, pero únicamente de los propietarios de sexo
Femenino:

Código:
1.
2. db.propietarios.find(
3.
4. {sexo:"F"},
5.
6. {
7. nombres:1,
8. apellidos:1,
9. departamento:1,
10. _id:0,
11. "vehiculos.marca":1,
12. "vehiculos.placa":1,
13. "vehiculos.color":1
14. }
15.
16. );
17.
Guía de Laboratorio No 3 Pág. 7
Bases de Datos Avanzadas
Resultado:
[
{
"nombres": "Ana",
"apellidos": "Diaz Quequezana",
"departamento": "102",
"vehículo ": [
{
"placa": "C3P-123",
"marca": "Nissan",
"color": "Rojo"
},
{
"placa": "D4T-123",
"marca": "Toyota",
"color": "Blanco"
},
{
"placa": "E5H-123",
"marca": "Chevrolet",
"color": "Gris"
}
]
},
{
"nombres": "Maria",
"apellidos": "Torreblanca Gallegos",
"departamento": "104",
"vehiculos": [
{
"placa": "J9Y-567",
"marca": "Nissan",
"color": "Verde"
},
{
"placa": "U7E-567",
"marca": "KIA",
"color": "Rosado"
}
]
}
]

Guía de Laboratorio No 3 Pág. 8


Bases de Datos Avanzadas
17.1. 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”:
Código:
db.propietarios.find(
{
sexo:"M",
"vehiculos.marca":"Toyota",
"vehiculos.color":"Blanco"
},

{
nombres:1,
apellidos:1,
departamento:1,
_id:0,
"vehiculos.placa":1,
}

);
Resultado:
[
{
"nombres": "Juan",
"apellidos": "Salas Valverde",
"departamento": "101",
"vehiculos": [
{
"placa": "A40-345"
},
{
"placa": "B5H-345"
}
]
}
]

18. 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
Nom Fecha Esta
Dpto bres Apellidos Sexo Nac. Teléfono Celular Placa Marca Modelo Año Color do
201 Gerardo López M 20-ene-80 959043435 C5H-908 KIA Sorento 2015 Blanco A
202 Karla Salinas F 12-jul-90 340077 F7H-897 Toyota Yaris 2010 Negro A
203 Diario Quezada M 11-ago-87 999090909 D5Y-555 Hyundai Santa Fe 2011 Azul A
204 Cecilia Valenzuela F 17-set-70 350101 959998976 C7P-454 Nissan Sentra 2008 Plata A
205 Dora Fernandez F 25-ene-84 343456 B7L-634 Toyota RAV4 2012 Rojo A
206 Carlos Cuellar M 15-ene-88 363609 998899098 F5H-774 KIA Cerato 2015 Azul A

Guía de Laboratorio No 3 Pág. 9


Bases de Datos Avanzadas
18.1. Adicione la información anterior a la base de datos. Anote los comandos utilizados para
realizar dicho registro

Codigo:
db.propietarios.insert(
[
{_id:6, departamento :201, nombres:'Gerardo', apellidos:'López',sexo:'M',departamento
:206 ,celular:959043435 , estado:'A', fecha_N:'20-ene-80',
vehiculos:[{placa:'C5H-908', marca:'KIA Sorento 2015', color:'Blanco', estado:'A'}]},

{_id:7, departamento :202, nombres:'Karla',apellidos:'Salinas',sexo:'F', departamento


:207 ,telefono:340077 , estado:'A' , fecha_N:'12-jul-90'
,vehiculos:[{

placa:'F7H-897', marca:'Toyota Yaris 2010', color:'Negro', estado:'A'}]},

{_id:8, departamento :203, nombres:'Diario' ,apellidos:'Quezada' ,sexo:'M'


, departamento :208 ,celular:999090909 , estado:'A', fecha_N:'11-ago-87'
,vehiculos:[{
placa:'D5Y-555', marca:'Hyundai Santa Fe 2011', color:'Azul', estado:'A'}]},

{_id:9, departamento :204, nombres:'Cecilia' ,apellidos:'Valenzuela' ,sexo:'F'


, departamento :209 ,telefono:350101 ,celular:959998976 , estado:'A', fecha_N:'17-set-
70'
,vehiculos:[{
placa:'C7P-454', marca:'Nissan Sentra 2008', color:'Plata', estado:'A'}]},

{_id:10, departamento :205,


nombres:'Dora' ,apellidos:'Fernandez' ,sexo:'F', departamento :210
,telefono:343456 , estado:'A', fecha_N:'25-ene-84'
,vehiculos:[{
placa:'B7L-634', marca:'Toyota RAV4 2012', color:'Rojo', estado:'A'}]},

{_id:11, departamento :206,


nombres:'Carlos' ,apellidos:'Cuellar' ,sexo:'M', departamento :211
,telefono:363609 ,telefono:998899098 , estado:'A', fecha_N:'15-ene-88'
,vehiculos:[{
placa:'F5H-774', marca:'KIA Cerato 2015', color:'Azul', estado:'A'}]}

])
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": 6,
"1": 7,
"2": 8,
"3": 9,
"4": 10,
"5": 11
}
}

Guía de Laboratorio No 3 Pág. 10


Bases de Datos Avanzadas
1.1. Adicionar información de registro de entradas salidas de vehículos del edificio
Uno de los vigilantes del edificio nos ha hecho llegar un registro que él ha realizado en
forma manual de los vehículos que han ingresado/salido del edificio. La información se
indica a continuación.
Dia Hora Placa Entrada Salida Nro Personas
01-mar-16 08:05 C5H-908 X 3
01-mar-16 08:20 F7H-897 X 1
01-mar-16 09:07 D5Y-555 X 2
01-mar-16 09:32 C7P-454 X 1
01-mar-16 09:45 B7L-634 X 2
01-mar-16 10:12 F5H-774 X 1
01-mar-16 20:06 C5H-908 X 1
01-mar-16 20:25 F7H-897 X 1
01-mar-16 21:05 D5Y-555 X 2
01-mar-16 21:34 C7P-454 X 1
01-mar-16 21:52 B7L-634 X 1
01-mar-16 22:15 F5H-774 X 1

Adicione la información anterior a la base de datos. Anote los comandos utilizados para
realizar dicho registro

Código:
db.registro.insert(
[
{fecha:'01-mar-16:08:05',placa:'C5H-908',movimiento:'Salida',
Personas: '3'},
{fecha:'01-mar-16:08:20',placa:'F7H-897',movimiento:'Entrada',
Personas: '1'},
{fecha:'01-mar-16:09:07',placa:'D5Y-555',movimiento:'Salida',
Personas: '2'},
{fecha:'01-mar-16:09:32',placa:'C7P-454',movimiento:'Salida',
Personas: '1'},
{fecha:'01-mar-16:09:45',placa:'B7L-634',movimiento:'Entrada',
Personas: '2'},
{fecha:'01-mar-16:10:12',placa:'F5H-774',movimiento:'Salida',
Personas: '1'},
{fecha:'01-mar-16:20:06',placa:'C5H-908',movimiento:'Entrada',
Personas: '1'},
{fecha:'01-mar-16:20:25',placa:'F7H-897',movimiento:'Salida',
Personas: '1'},
{fecha:'01-mar-16:21:05',placa:'D5Y-555',movimiento:'Entrada',
Personas: '2'},
{fecha:'01-mar-16:21:34',placa:'C7P-454',movimiento:'Entrada',
Personas: '1'},
{fecha:'01-mar-16:21:52',placa:'B7L-634',movimiento:'Salida',
Personas: '1'},
{fecha:'01-mar-16:22:15',placa:'F5H-774',movimiento:'Entrada',
Personas: '1'}
]
);
Guía de Laboratorio No 3 Pág. 11
Bases de Datos Avanzadas
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": {
"$oid": "63195a056d0a76073186a7c9"
},
"1": {
"$oid": "63195a056d0a76073186a7ca"
},
"2": {
"$oid": "63195a056d0a76073186a7cb"
},
"3": {
"$oid": "63195a056d0a76073186a7cc"
},
"4": {
"$oid": "63195a056d0a76073186a7cd"
},
"5": {
"$oid": "63195a056d0a76073186a7ce"
},
"6": {
"$oid": "63195a056d0a76073186a7cf"
},
"7": {
"$oid": "63195a056d0a76073186a7d0"
},
"8": {
"$oid": "63195a056d0a76073186a7d1"
},
"9": {
"$oid": "63195a056d0a76073186a7d2"
},
"10": {
"$oid": "63195a056d0a76073186a7d3"
},
"11": {
"$oid": "63195a056d0a76073186a7d4"
}
}
}

2. 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:
Nom Fecha Esta
Dpto bres Apellidos Sexo Nac. Teléfono Celular Placa Marca Modelo Año Color do
204 Cecilia Valenzuela F 17-set-70 350101 959998976 B7L-634 Toyota RAV4 2012 Rojo A
C7P-454 Nissan Sentra 2008 Plata A
205 Dora Fernandez F 25-ene-84 343456 E59-666 Toyota Corolla 2002 Azul A

Guía de Laboratorio No 3 Pág. 12


Bases de Datos Avanzadas
2.1. Modifique la información anterior en la base de datos. Anote los comandos utilizados para
realizar dicha actividad
db.propietarios.update(
[
{_id: 4,nombres: 'Cecilia', apellidos: 'Valenzuela', sexo: 'F',
departamento: '204', telefono: '350101', celular: '959998976',
estado:'A'},
{$push:{vehiculos: [{placa: 'CFM-ASE', modelo:'Hyundai Sedan',
color: 'Dorado', estado:'B'}]
}},

{_id: 5,nombres: 'Dora', apellidos: 'Fernandez', sexo: 'F',


departamento: '205', telefono: '343456', estado:'A',
$push:{vehiculos: [
{placa: 'C7P-454',modelo:'Nissan Sentra', color:
'Plata', estado:'A'},
{placa: 'XUI-875',modelo:'BMW Group', color: 'Negro',
estado:'A'}
]
}
}
]

2.2. El propietario Carlos Cuellar indica que acaba de cambiar el color de su auto al nuevo color
“Amarillo” y solicita que se actualice el color actual de su vehículo en la base de datos.
Utilice el siguiente comando:
> db.propietarios.update({nombres:'Carlos', apellidos:'Cuellar',
'vehiculos.placa':'F5H-774'}, {$set:{'vehiculos.$.color':'Amarillo'}});
{
"acknowledged": true,
"insertedId": null,
"matchedCount": 1,
"modifiedCount": 1,
"upsertedCount": 0
}

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

2.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.update({nombres:'Gerardo', apellidos:'Lopez'},
{$push: {vehiculos: {placa:'V4H-777', marca:'KIA', modelo:'Picanto',
anio:2015, color:'Verde'}}})
{
"acknowledged": true,
"insertedId": null,
"matchedCount": 1,
"modifiedCount": 1,
"upsertedCount": 0
}

Guía de Laboratorio No 3 Pág. 13


Bases de Datos Avanzadas
Nota: En este caso se ha hecho uso del operador “$push” el cual permite adicionar
elementos a un campo de tipo arreglo

2.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.update( {nombres:'Gerardo', apellidos:'Lopez'},
{$pull: {vehiculos: {placa:'C5H-908'}}});
{
"acknowledged": true,
"insertedId": null,
"matchedCount": 1,
"modifiedCount": 1,
"upsertedCount": 0
}

Nota: En este caso se ha hecho uso del operador “$pull” el cual permite eliminar un
elemento de un campo de tipo arreglo
2.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.update(
{{_id:7,nombres:'Karla',apellidos:'Salinas'},
{$push:{vehiculos:[{anio:2001}]}})

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.registro.insert({
_id:8},{vehiculos:{
placa:'V1W-823',marca:'Toyota',color:'Azul
Marino',estado:'A',anio:2010
}
})

2.6. Obtener un listado de los movimientos de Entrada/salida registrados el 1 de marzo del 2016.
Utilice el siguiente comando:
> db.registro.find( {fecha: {$gte: '2016-03-01', $lt: '2016-03-02'}},
{_id:0, fecha:1, placa:1, movimiento:1} );
2.7. Obtener un listado de los vehículos que ingresaron con más de un ocupante registrados el 1
de marzo del 2016. Utilice el siguiente comando:
> db.registro.find( {fecha: {$gte: '2016-03-01', $lt: '2016-03-02'},
movimiento:'Entrada', nro_personas:{$gt: 1} },
{_id:0, fecha:1, placa:1, nro_personas:1});

Guía de Laboratorio No 3 Pág. 14


Bases de Datos Avanzadas
2.8. Obtener los el número de placa y el color del vehículo, así como los nombres, apellidos y
departamento de los propietarios de un vehículo de color Blanco cuya placa termina en el
número 3. Use los siguientes comandos y evalúe el resultado obtenido en cada uno de ellos
y anote sus comentarios al respecto:

Código 1:

db.propietarios.find({"vehiculos.color": "Blanco",
"vehiculos.placa": {$regex:/3$/}},
{nombres:1, apellidos:1, 'vehiculos':1});
Resultado:

[
{
"_id": 2,
"nombres": "Ana",
"apellidos": "Diaz Quequezana",
"vehiculos": [
{
"placa": "C3P-123",
"marca": "Nissan",
"color": "Rojo",
"estado": "A"
},
{
"placa": "D4T-123",
"marca": "Toyota",
"color": "Blanco",
"estado": "A"
},
{
"placa": "E5H-123",
"marca": "Chevrolet",
"color": "Gris",
"estado": "A"
}
]
}
]
Comentario:
Es un código algo simple, donde se busca dentro de la subtabla relacionada
“vehículos” la placa que termine con 3, por lo que se utiliza “$regex” usado para
buscar caracteres.

Guía de Laboratorio No 3 Pág. 15


Bases de Datos Avanzadas
Código 2:

db.propietarios.find({"vehiculos.color":"Blanco",
"vehiculos.placa":{$regex:/3$/}},
{nombres:1,apellidos:1,
vehiculos:{$elemMatch:{color:'Blanco',
placa:{$regex:
/3$/}}}});

Resultado:

[
{
"_id": 2,
"nombres": "Ana",
"apellidos": "Diaz Quequezana",
"vehiculos": [
{
"placa": "D4T-123",
"marca": "Toyota",
"color": "Blanco",
"estado": "A"
}
]
}
]
Comentario:

De igual manera se utiliza dos veces “$regex” para buscar el 3, el “$elemMatch” se


uso para observar solo la subtabla que se está buscando ósea la subtabla donde se
aplicó el filtro.

Nota: En el segundo caso se ha hecho uso del operador “$elemMatch” el cual permite
aplicar filtros a un campo de tipo arreglo para visualizar determinados elementos del
arreglo y no todos como en el primer caso.

2.9. Listar propietarios que no registran ningún vehículo

Guía de Laboratorio No 3 Pág. 16


Bases de Datos Avanzadas

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 Interl Core i7
- Equipos que cuentan con Memoria RAM menor a 8 GB
- Equipos que se hayan instalado después de una fecha específica
- Otras consultas que usted proponga

Tablas
Código:
db.Computadoras_Tecsup.insert([
{id:'A01-PC_EF-01',
clase:'A',modelo:'EF',marca:'HP',procesador:'corei5',ram:16,tarjeta:'RT-
213',cantidad:6,
discos_duro:[
{tipo:'SSD',tamanio:250},
{tipo:'HDD',tamanio:1000}
]},
{id:'A01-PC_YI-02',
clase:'A',modelo:'YI',marca:'OIO',procesador:'corei7',ram:8,tarjeta:'RT-
213',cantidad:6,
discos_duro:[
{tipo:'SSD',tamanio:250},
{tipo:'HDD',tamanio:250}
]},
{id:'A02-PC_EF-03',
clase:'A',modelo:'EF',marca:'AOC',procesador:'corei5',ram:8,tarjeta:'RTX-
213',cantidad:2,
discos_duro:[
{tipo:'HDD',tamanio:500},
]},
{id:'B01-PC_RU-04',
clase:'B',modelo:'RU',marca:'OIO',procesador:'corei7',ram:16,tarjeta:'RTX-
445',cantidad:12,
discos_duro:[
{tipo:'SSD',tamanio:120},
{tipo:'HDD',tamanio:1000}
]},
{id:'B01-PC_YI-05',
Guía de Laboratorio No 3 Pág. 17
Bases de Datos Avanzadas
clase:'B',modelo:'YI',marca:'LG',procesador:'corei3',ram:8,tarjeta:'RT-
784',cantidad:8,
discos_duro:[
{tipo:'SSD',tamanio:250},
{tipo:'HDD',tamanio:1000}
]},
{id:'C01-PC_RU-06',
clase:'C',modelo:'RU',marca:'AOC',procesador:'corei5',ram:8,tarjeta:'RTO-
200',cantidad:12,
discos_duro:[
{tipo:'SSD',tamanio:500},
{tipo:'HDD',tamanio:250}
]},
{id:'C02-LP_YI-01',
clase:'C',modelo:'YI',marca:'OIO',procesador:'corei3',ram:8,tarjeta:'RTO-
200',cantidad:8,
discos_duro:[
{tipo:'HDD',tamanio:250}
]},

]);
Resultado:
{
"acknowledged": true,
"insertedIds": {
"0": {
"$oid": "631a8d06bf55e76e6f8da00d"
},
"1": {
"$oid": "631a8d06bf55e76e6f8da00e"
},
"2": {
"$oid": "631a8d06bf55e76e6f8da00f"
},
"3": {
"$oid": "631a8d06bf55e76e6f8da010"
},
"4": {
"$oid": "631a8d06bf55e76e6f8da011"
},
"5": {
"$oid": "631a8d06bf55e76e6f8da012"
},
"6": {
"$oid": "631a8d06bf55e76e6f8da013"
}
}
}

Guía de Laboratorio No 3 Pág. 18


Bases de Datos Avanzadas

Consultas
Se requiere saber cuántas PCs tienen 8gb de RAM y son de la clase A.
Código:

db.Computadoras.find(
{"clase":"A",ram:{$gt:8}},
{modelo:1,cantidad:1}
);
Resultado:
[
{
"_id": "A01-PC_EF-01",
"modelo": "EF",
"cantidad": 6
}
]

Se necesita saber que computadoras tienen un SSD y un disco de 250


Código:
use('Lab03');

db.Computadoras.find(
{
procesador:"corei5",
"discos_duro.tipo":"SSD",
"discos_duro.tamanio":250
},{
_id:0,
modelo:1,
"discos_duro.tipo":1,
"discos_duro.tamanio":1
}
);
Resultado:
[
{
"modelo": "EF",
"discos_duro": [
{
"tipo": "SSD",
"tamanio": 250
},
{
"tipo": "HDD",
"tamanio": 1000
}
]
},
{
"modelo": "RU",
"discos_duro": [
Guía de Laboratorio No 3 Pág. 19
Bases de Datos Avanzadas
{
"tipo": "SSD",
"tamanio": 500
},
{
"tipo": "HDD",
"tamanio": 250
}
]
}
]

Se necesita saber que clases tienen una tarjeta gráfica “gamer” y de que marca es la pc
Código:
db.Computadoras.find(
{"tarjeta":{$not:/RTX/}},
{
_id:0,
clase:1,
marca:1,
tarjeta:1
}
);
Resultado
[
{
"clase": "A",
"marca": "HP",
"tarjeta": "RT-213"
},
{
"clase": "A",
"marca": "OIO",
"tarjeta": "RT-213"
},
{
"clase": "B",
"marca": "LG",
"tarjeta": "RT-784"
},
{
"clase": "C",
"marca": "AOC",
"tarjeta": "RTO-200"
},
{
"clase": "C",
"marca": "OIO",
"tarjeta": "RTO-200"
}
]

Guía de Laboratorio No 3 Pág. 20


Bases de Datos Avanzadas
Conclusiones:
Indicar las conclusiones que llegó después de los temas tratados de manera práctica en este
laboratorio.

• Se pueden hacer subtablas ilimitadas veces siempre que este relacionado con el
ID principal.

• Cuando se aplica un filtro a una subtabla no desparece en el resultado de la


consulta para eso se tiene que aplicar “$elemMatch”.

• CRUD es el acrónimo de "Crear, Leer, Actualizar y Borrar", que se usa para


referirse a las funciones básicas en bases de datos.

• Cuando se hace una consulta los primeros corchetes son para aplicar un filtro y el
segundo par de corchetes es para mostrar ciertos datos.

Guía de Laboratorio No 3 Pág. 21

También podría gustarte