Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integración de Sistemas
LABORATORIO N° 02
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
Equipos y Materiales:
Procedimiento:
Lab Setup
1. Inicio
1.1. Inicie el servidor de la base de datos MongoDB
1.2. Inicie el Shell de MongoDB y crear una base de datos de nombre: Lab02
Adición de documentos
db.Areas.find({"Abreviatura":"Inf."});
{ "_id" : ObjectId("63126ae53bc07875b8f580d8"), "Nombre" :
"Informatica", "Abreviatura" : "Inf.", "Estado" : "A" }
3.4. Verificar que se haya adicionado el nuevo documento (Anote el comando utilizado):
>
db.Areas.find( {} );
{ "_id" : ObjectId("6312697a3bc07875b8f580d7"), "Nombre" : "Docencia", "Abreviatura" : "Doc.",
"Estado" : "A" }
{ "_id" : ObjectId("63126ae53bc07875b8f580d8"), "Nombre" : "Informatica", "Abreviatura" : "Inf.",
"Estado" : "A" }
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):
>
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.insert([
{Nombre:'Administracion',Abreviatura:'Admi.',Estado:'A'},
{Nombre:'Tecnologias de Informacion y Seguridad',Abreviatura:'TIS.',Estado:'A'}
]);
3.8. Verificar que se hayan adicionado los tres nuevos documentos (Anote el comando utilizado):
>
4.3. Verificar que se haya modificado el documento “Area1” (Anote el comando utilizado):
>
4.4. Modifique el documento Area2 con los siguientes datos: (Anote el comando utilizado):
Nombre Abreviatura Estado
Area No 2 Ar2 P
4.5. Verificar que se haya modificado el documento “Area2” (Anote el comando utilizado):
>
db.Areas.find({"Abreviatura":"Ar1"});
{ "_id" : ObjectId("6312751a3bc07875b8f580de"), "Nombre" : "Area No 1", "Abreviatura" :
"Ar1", "Estado" : "N" }
>
4.6. Modifique el documento Area3 con los siguientes datos: (Anote el comando utilizado):
Nombre Abreviatura Estado
Area No 3 Ar3 N
4.7. Verificar que se haya modificado el documento “Area3” (Anote el comando utilizado):
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.10. Modifique el documento “Area No 2”, cambie la Abreviatura y el Estado con los valores
“ARE2” y “A” respectivamente. (Anote el comando utilizado):
>
4.11. Verificar que se haya modificado el documento “Area No 2” (Anote el comando utilizado):
db.Areas.find({"Abreviatura":"ARE2"});
4.12. Modifique el documento “Area No 3”, cambie su abreviatura con el valor “AN3”: (Anote el
comando utilizado):
4.13. Verificar que se haya modificado el documento “Area No 3” (Anote el comando utilizado):
>db.Areas.find({"Abreviatura":"AR3"});
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):
>
>
5.4. Verificar que se haya eliminado el documento “Area No 2” (Anote el comando utilizado):
>
5.5. Eliminar el documento con abreviatura “AN3” de la colección Áreas (Anote el comando
utilizado):
>
5.6. Verificar que se haya eliminado el documento “AN3” (Anote el comando utilizado):
>
6. Consulta de documentos
6.1. Visualizar todos los documentos de la colección Áreas
<
> db.Areas.find();
> 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
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, Abreviatura:1, Estado:1});
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.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):
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):
show databases
Lab02 0.000GB
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
> use Lab02
switched to db Lab02
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();
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'}, {nombre:1, tipo:1, genero:1 } );
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.insert({_id:10,nombre:"Encriptador"})
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.insert({_id:11, nombre:"D.Humanos", sueldo:1200, comision:0.20,
estado:"Disponible"})
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 } );
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.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: { $lt: 5000 } } );
8.4. 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 } );
8.6. 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} );
8.8. 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.
Nombre Descripción
• $eq Coincide con valores que son iguales a un valor especificado.
• $gt Coincide con valores que son mayores que un valor especificado.
• $gte Coincide con valores que son mayores o iguales a un valor especificado.
• $lt Coincide con valores que son menores que un valor especificado.
• $lte Coincide con valores que son menores o iguales a un valor especificado.
• $ne Coincide con todos los valores que no son iguales a un valor especificado.
• $in Coincide con cualquiera de los valores especificados en una matriz.
• $nin No coincide con ninguno de los valores especificados en una matriz.
Logical Query Operators
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)
use ('TareaLab02_Felix_Garcia');
db.Profesores.insert([
]);
db.Medicos.insert([
2. Elaborar una serie de comandos que permitan consultar documentos de las tablas creadas en la
base de datos anterior y adjuntarlos como parte de la presente guía de laboratorio. Deberá incluir
“El requerimiento textual de la información a obtener” y luego el “comando implementado para
obtener la información requerida” (En forma similar como se han presentado los ejercicios en la
guía de laboratorio).
db.Profesores.find(
{Edad:{$lt:30}},
{_id:0, Curso:0, Clase:0}
);
db.Profesores.find(
{Clase:{$in:['A1','A2']}},
{_id:0,Clase:1,Curso:1}
);
Conclusiones:
Indicar las conclusiones que llegó después de los temas tratados de manera práctica en este
laboratorio.