Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lab02-BDAV - Operaciones Con Shell
Lab02-BDAV - Operaciones Con Shell
Integración de Sistemas
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
Equipos y Materiales:
● Una computadora con:
● Windows 7 o superior
Procedimiento:
Lab Setup
1. Inicio
1.1. Vamos a agregar la ruta del Shell de MongoDB (hasta la carpeta BIN) a la variable de
sistema Path, tal como muestran las siguientes imágenes:
1.2. Guardamos todos los cambios, cerrando todas las ventanas abiertas.
1.3. Abrimos una ventana de comandos e ingresamos el comando: mongosh
1.4. Creamos una base de datos de nombre: Lab02
Adición de documentos
3.4. Verificar que se haya adicionado el nuevo documento (Anote el comando utilizado):
> db.Areas.find({Nombre:’Informatica’})
3.5. Adicionar, con una sola instrucción, los documentos “Electrotecnia, Mecánica y Estudios
Generales” a la colección Áreas
> db.Areas.insert( [
{Nombre: 'Electrotecnia', Abreviatura: 'Elect.', Estado:'A'},
{Nombre: 'Mecanica', Abreviatura: 'Mec.', Estado:'A'},
{Nombre: 'Estudios Generales',Abreviatura: 'EEGG', Estado:'A'}
] );
3.6. Verificar que se hayan adicionado los tres nuevos documentos (Anote el comando utilizado):
> db.Areas.find({ $or: [ { Abreviatura: 'EEGG' }, { Abreviatura: 'Mec.' }, {
Abreviatura: 'Elect.' } ]}))
3.7. Adicionar, con una sola instrucción, los documentos “Administración, Tecnologías de
Información y Seguridad” a la colección Áreas (Anote el comando utilizado):
> db.Areas.insertOne([
{Nombre:’Administracion’, Abreviatura:’Adm.’, Estado:’A’},
{Nombre:’Tecnologias de Informacion’, Abreviatura:’TI’, Estado:’A’},
{Nombre:’Seguridad’, Abreviatura:’Seg.’, Estado:’A’},
3.8. Verificar que se hayan adicionado los tres nuevos documentos (Anote el comando utilizado):
> db.Areas.find()
4.4. Modifique el documento Area2 con los siguientes datos: (Anote el comando utilizado):
Nombre Abreviatura Estado
Area No 2 Ar2 P
> db.Areas.updateOne({Nombre:'Area2'}, {$set:{Nombre:'Area No 2',
Abreviatura:'Ar2', Estado:'P'}})
4.5. Verificar que se haya modificado el documento “Area2” (Anote el comando utilizado):
> db.Areas.find({Nombre:'Area No 2'})
4.7. Verificar que se haya modificado el documento “Area3” (Anote el comando utilizado):
>db.Areas.find({Nombre:'Area No 3'})
4.8. Modifique el documento “Area No 1”, cambie el estado con el valor “A”:
> db.Areas.update( {Nombre: 'Area No 1'}, {$set: { Estado:'A'} } );
4.9. Verificar que se haya modificado el estado del documento “Area No 1” (Anote el comando
utilizado):
> db.Areas.find({Nombre:'Area No 1'})
4.10. Modifique el documento “Area No 2”, cambie la Abreviatura y el Estado con los valores
“ARE2” y “A” respectivamente. (Anote el comando utilizado):
>db.Areas.update( {Nombre: 'Area No 2'}, {$set: {Abreviatura:'ARE2', Estado:'A'} }
);
4.11. Verificar que se haya modificado el documento “Area No 2” (Anote el comando utilizado):
>db.Areas.find({Nombre:'Area No 2'})
4.12. Modifique el documento “Area No 3”, cambie su abreviatura con el valor “AN3”: (Anote el
comando utilizado):
> db.Areas.update( {Nombre: 'Area No 3'}, {$set: {Abreviatura:'AN3'}});
4.13. Verificar que se haya modificado el documento “Area No 3” (Anote el comando utilizado):
> db.Areas.find({Nombre:'Area No 3'})
5. Eliminación de documentos
5.1. Eliminar el documento “Area No 1” de la colección Áreas
> db.Areas.remove( {Nombre: 'Area No 1'} );
5.2. Verificar que se haya eliminado el documento “Area No 1” (Anote el comando utilizado):
> db.Areas.find({Nombre:'Area No 1'})
5.4. Verificar que se haya eliminado el documento “Area No 2” (Anote el comando utilizado):
> db.Areas.find({Nombre:'Area No 1'})
5.5. Eliminar el documento con abreviatura “AN3” de la colección Áreas (Anote el comando
utilizado):
> db.Areas.deleteOne({Abreviatura:'AN3'})
5.6. Verificar que se haya eliminado el documento “AN3” (Anote el comando utilizado):
> db.Areas.find({Abreviatura:'AN3'})
6. Consulta de documentos
6.1. Visualizar todos los documentos de la colección Áreas
Guía de Laboratorio No 2 Pág. 5
Bases de Datos Avanzadas
> db.Areas.find();
o
> db.Areas.find( {} );
6.2. Visualizar todos los documentos de la colección Áreas mostrando únicamente los campos
Nombre y Estado
> db.Areas.find( {} , { _id:0, Abreviatura:0 } );
o
> db.Areas.find({},{_id:0, Nombre:1, Estado:1});
6.3. Visualizar todos los documentos de la colección Áreas mostrando únicamente los campos
Abreviatura y Estado (Anote el comando utilizado):
> db.Areas.find({}, {_id:0, Nombre:0})
6.7. Visualizar únicamente el primer documento de la colección Áreas que tenga el campo
Estado con el valor ‘A’ mostrando únicamente los campos Nombre y Estado:
> db.Areas.findOne( { Estado: 'A' }, { _id:0, Abreviatura:0 } );
6.8. Visualizar todos los documentos de la colección Áreas en orden ascendente según el
campo Nombre, mostrando únicamente los campos Nombre y Estado:
> db.Areas.find( { }, { _id:0, Abreviatura:0 } ).sort( { Nombre: 1} );
6.9. Visualizar todos los documentos de la colección Áreas en orden descendente según el
campo Nombre, mostrando únicamente los campos Nombre y Estado:
> db.Areas.find( { }, { _id:0, Abreviatura:0 } ).sort( { Nombre: -1} );
6.10. Visualizar los 3 primeros documentos de la colección Áreas, mostrando únicamente los
campos Nombre y Estado:
> db.Areas.find( {}, { _id:0, Abreviatura:0} ).limit(3);
7.2. Verifique que exista la nueva colección “copiaAreas” y que su contenido sea idéntico a la
colección “Areas” (Anote los comandos utilizados):
> db.Areas.copyTo( 'copiaAreas' );
> db.copiaAreas.find()
7.3. Crear una segunda copia completa de la colección “Áreas” con el nombre “copia2Areas”
> db.Areas.find().forEach( function( param ) { db.copia2Areas.insert( param ) } );
7.4. Verifique que exista la nueva colección “copia2Areas” y que su contenido sea idéntico a la
colección “Areas” (Anote los comandos utilizados):
> db.Areas.find().forEach(function(param){db.copia2Areas.insert(param)})
> db.copia2Areas.find()
> ___________________________________________________________________
7.8. Visualizar todos los documentos de la colección Mascotas mostrando únicamente los
campos nombre, tipo y género (Anote el comando utilizado):
>db.Mascotas.find({}, {_id:0, fecha_nacimiento:0})
[
{ nombre: 'Boby', tipo: 'Perro', genero: 'M' },
{ nombre: 'Keyla', tipo: 'Gato', genero: 'H' },
Guía de Laboratorio No 2 Pág. 8
Bases de Datos Avanzadas
{ nombre: 'Lasie', tipo: 'Perro', genero: 'H' },
{ nombre: 'Feli', tipo: 'Gato', genero: 'M' },
{ nombre: 'Lucas', tipo: 'Perro', genero: 'M' },
{ nombre: 'Messi', tipo: 'Gato', genero: 'M' },
{ nombre: 'Nana', tipo: 'Perro', genero: 'H' },
{ nombre: 'Pepa', tipo: 'Loro', genero: 'H' }
]
7.10. Visualizar únicamente los documentos de mascotas de tipo “Perro” de género “M” de la
colección Mascotas y mostrando únicamente los campos nombre, tipo y género (Anote el
comando utilizado):
> db.Mascotas.find({tipo:'Perro', genero:'M'}, {_id:0, fecha_nacimiento:0})
7.11. Adicionar un documento a la colección Mascotas con menor número de campos (No se
incluye el campo “fecha_nacimiento” ):
> db.Mascotas.insert( { _id: 9, nombre:'Mirna', tipo:'Gato', genero:'H' } );
7.12. Adicionar un documento a la colección Cargos que incluya únicamente los campos: “_id” y
“nombre” (Anote el comando utilizado):
> db.Cargos.insertOne({_id:10, nombre:'Carpintero'})
7.14. Adicionar un documento a la colección Cargos que incluya además de todos los campos
actuales, los campos nuevos: “comision” y “estado” (Anote el comando utilizado):
> db.Cargos.insertOne({_id:11, nombre:'Vendedor', sueldo:4000, comision: 500,
estado:'Activo'})
7.15. Visualizar los documentos de mascotas que no sean de tipo “Gato” de la colección
Mascotas y mostrando únicamente los campos nombre, tipo y género:
> db.Mascotas.find( { tipo: {$ne: "Gato"} }, { _id:0, nombre: 1, tipo:1, genero:1 } );
o
> db.Mascotas.find( { tipo: { $not: { $eq: "Gato"} } }, {_id:0, fecha_nacimiento:0 } );
7.16. Visualizar los documentos de cargos cuyo sueldo sea mayor a “6500” soles de la colección
Cargos y mostrando únicamente los campos nombre, y sueldo:
> db.Cargos.find( { sueldo: { $gt: 6500 } }, { _id:0, nombre:1, sueldo:1 } );
7.17. Visualizar los documentos de Mascotas que no sean de tipo Gato y cuyo género no sea
“M” , mostrando únicamente los campos nombre, tipo y género:
> db.Mascotas.find( { $nor: [ { tipo: "Gato" }, { genero: 'M' } ] },
{ _id:0, nombre:1, tipo:1, genero:1 } );
7.18. Visualizar los documentos de Mascotas en los que exista el campo “origen”, mostrando
todos los campos:
> db.Mascotas.find( { origen: { $exists: true } } );
7.19. Visualizar los documentos de Mascotas en los que NO exista el campo “origen”, mostrando
todos los campos:
Guía de Laboratorio No 2 Pág. 9
Bases de Datos Avanzadas
> db.Mascotas.find( { origen: { $not: { $exists: true } } } );
7.20. Visualizar los documentos de Cargos en los que exista el campo “sueldo” y cuyo monto
sea mayor a “5000” soles, mostrando todos los campos:
> db.Cargos.find( { sueldo: { $exists: true, $gt: 5000 } } );
7.21. Visualizar los documentos de Cargos en los que exista el campo “sueldo” y cuyo monto
sea menor a “5000” soles, mostrando todos los campos:
> db.Cargos.find( { sueldo: { $exists: true, $lt: 5000 } } );
7.22. Visualizar los documentos de Cargos en los que exista el campo “sueldo” y cuyo monto se
encuentre entre el rango de “5000” y “10000” soles, mostrando todos los campos:
> db.Cargos.find( { sueldo: { $exists: true, $gte: 5000, $lte: 10000 } } );
7.24. Visualizar los documentos de Mascotas cuyos nombres contengan la letra “L” en cualquier
posición sin diferenciar mayúsculas de minúsculas, mostrando todos los campos:
> db.Mascotas.find( { nombre: { $regex: /L/i } } );
7.25. Visualizar los documentos de Mascotas cuyos nombres inicien con la letra “L” y además
que contengan la letra “a” en cualquier posición, mostrando todos los campos:
> db.Mascotas.find( { $and: [ {nombre: { $regex: /^L/ } }, { nombre: {$regex: /a/} }
] } );
7.26. Visualizar los documentos de Mascotas cuyos nombres no inicien con la letra “L”,
mostrando únicamente el campo “nombre”:
> db.Mascotas.find( { nombre: { $not: /L/ } }, {_id:0, nombre:1 } );
7.27. Visualizar los documentos de Mascotas cuyos nombres terminen en la letra “a”, mostrando
únicamente el campo “nombre”:
> > db.Mascotas.find( { nombre: { $regex: 'a$' } }, {_id:0, nombre:1} );
7.28. Visualizar los documentos de Mascotas cuyos nombres no terminen en la letra “a”,
mostrando únicamente el campo “nombre”:
> > db.Mascotas.find( { nombre: { $not: /a$/ } }, {_id:0, nombre:1} );
7.29. Visualizar los documentos de Mascotas cuyos nombres inicien con alguna de las letras “L”
o “B” o “M”, mostrando únicamente el campo “nombre”:
> db.Mascotas.find( { nombre: { $regex: '[LBM]' } }, { _id:0, nombre:1 } );
7.30. Visualizar los documentos de Mascotas cuyos nombres NO inicien con alguna de las letras
“L” o “B” o “M”, mostrando únicamente el campo “nombre”:
> db.Mascotas.find( { nombre: { $not: /[LBM]/ } }, { _id:0, nombre:1 } );
For comparison of different BSON type values, see the specified BSON comparison order.
Name Description
$eq Matches values that are equal to a specified value.
$gt Matches values that are greater than a specified value.
$gte Matches values that are greater than or equal to a specified value.
Name Description
$or Joins query clauses with a logical OR returns all documents that match the conditions of
either clause.
$and Joins query clauses with a logical AND returns all documents that match the conditions
of both clauses.
$not Inverts the effect of a query expression and returns documents that do not match the
query expression.
$nor Joins query clauses with a logical NOR returns all documents that fail to match both
clauses.
Regular Expressions
$regex, provides regular expression capabilities for pattern matching strings in queries. MongoDB
uses Perl compatible regular expressions.
To use $regex, use one of the following syntax:
In MongoDB, you can also use regular expression objects (i.e. /pattern/) to specify regular
expressions:
{ <field>: /pattern/<options> }
$options
The following <options> are available for use with regular expression.
Option Description
i Case insensitivity to match upper and lower cases. For an example, see Perform
Case-Insensitive Regular Expression Match.
m For patterns that include anchors (i.e. ^ for the start, $ for the end), match at the
beginning or end of each line for strings with multiline values. Without this option, these
anchors match at beginning or end of the string.
If the pattern contains no anchors or if the string value has no newline characters (e.g.
\n), the m option has no effect.
x “Extended” capability to ignore all white space characters in the $regex pattern unless
escaped or included in a character class.
The x option does not affect the handling of the VT character (i.e. code 11).
Tarea:
1. Implemente un archivo script el cual permita crear una base de datos de nombre “TareaLab02”
además debe contener sentencias para crear dos colecciones y adicionar documentos a dichas
colecciones (mínimo 10 documentos por cada colección). Cada estudiante propondrá los
nombres de cada colección. (Incluya el contenido del archivo resultante en esta sección de la
guía de laboratorio)
Muestra todos los estudiantes que solo tengan una edad igual a 22 años
db.Estudiantes.find({edad: { $eq:22 } })
Muestra todos los profesores que tengan una experiencia igual o mayor a 12 años
db.Profesores.find({ experiencia: { $gte: 12 } })