Data">
Clase 18 - CRUD en MongoDB
Clase 18 - CRUD en MongoDB
Clase 18 - CRUD en MongoDB
Programación Backend
CRUD en MongoDB
● Comprender el significado de CRUD.
OBJETIVOS DE LA CLASE
● Crear y configurar cuentas de usuario, para
definir roles que representarán permisos de
acceso y operación en la base de datos.
CRONOGRAMA DEL CURSO
Clase 17 Clase 18 Clase 19
Comandos Helpers
● show dbs: listado de bases no vacías
● use: crea y selecciona base de trabajo
● db: muestra la base actual
● show collections: listado de colecciones
● load: carga un script de comandos
MongoDB: Listado de Comandos
Manejo de Base de datos y Colecciones
MongoDB: Detalle de Comandos
● db.coll.drop() : borra una colección y sus índices respectivos.
● db.dropDatabase() : elimina la base de datos actual.
● db.createCollection("contacts") : crea una colección en forma explícita.
● db.coll.stats() : refleja estadísticas del uso de la base.
● db.coll.storageSize() : tamaño de almacenamiento de la colección.
● db.coll.totalIndexSize() : tamaño total de todos los índices de la colección.
● db.coll.totalSize(): tamaño total en bytes de los datos de la colección más el
tamaño de cada índice de la colección.
● db.coll.validate({full: true}) : comprueba la integridad de una colección.
● db.coll.renameCollection("new_coll", true) : renombra una colección, el 2do
parámetro para borrar la colección destino si existe.
MongoDB: Comandos CRUD
CREATE y READ
Comando Create (insert)
Comandos Count
Son funciones que cuentan la cantidad de documentos presentes en
una colección. Algunas de ellas pueden tener la opción de filtro.
MongoDB: Contadores
● db.coll.estimatedDocumentCount()
Devuelve la cantidad total de documentos encontrados en la colección.
● db.coll.countDocuments( {key: val} )
Devuelve la cantidad de documentos encontrados en la colección (con
filtro de query).
CRUD
Tiempo: 10 minutos
Utilizando Mongo shell, realizar las siguientes acciones:
1) Crear una base de datos en MongoDB llamada 'empresa'.
2) Crear una colección llamada 'clientes' dentro de esa base.
3) Insertar un documento en la colección clientes que contenga los campos ‘nombre’ y
‘edad’.
4) Insertar un array de tres documentos con el mismo formato y valores distintos en la
colección clientes (modo bulk).
5) Utilizando un sólo comando, crear una colección llamada 'articulos' e insertar dentro
de ella un array de cuatro documentos con los campos ‘nombre’, ‘precio’ y ‘stock’.
6) Mostrar las colecciones de la base 'empresa'.
7) Listar todos los documentos dentro de cada una de las colecciones.
8) Tomar el Object ID de uno de los documentos y comprobar fecha y hora de creación.
9) Mostrar la cantidad de documentos que tiene la colección articulos.
☕
BREAK
¡5/10 MINUTOS Y VOLVEMOS!
FILTROS
MongoDB: Comandos CRUD
READ con Filtros
Comando Read con filtros de búsqueda
db.coll.find( {key: {$operator: val}} ) : devuelve los documentos según el
operador de filtro utilizado.
MongoDB: Operadores
para Filtros de Query
● $and : Realiza operación AND -> sintaxis: {$and: [ {},{} ] }
● $or : Realiza operación OR -> sintaxis: {$or: [ {},{} ] }
● $lt : Coincide con valores que son menores que un valor especificado.
● $lte : Coincide con valores menores o iguales a un valor especificado.
● $gt : Coincide con valores mayores a un valor especificado.
● $gte : Coincide con valores mayores o iguales a un valor especificado.
● $ne : Coincide con valores que no son iguales a un valor especificado.
● $eq : Selecciona los documentos que son iguales a un valor
especificado.
MongoDB: Operadores
para Filtros de Query
● $exists : Selecciona los documentos según la existencia de un campo.
● $in : Selecciona los documentos especificados en un array.
sintaxis: {key:{$in: [array of values] } }
● $nin : Coincide con ninguno de los valores especificados en un array.
● $size : Coincide con el número de elementos especificados.
● $all : Coincide con todos los valores definidos dentro de un array.
● $elemMatch : Coincide con algún valor definido dentro del query.
https://docs.mongodb.com/manual/reference/operator/query/
MongoDB: Comandos CRUD
READ con Filtros combinados
Comando Read con filtros de búsqueda combinados
❏
MongoDB
Búsqueda Avanzada
● db.coll.distinct( val )
devuelve un array con los distintos valores que toma un
determinado campo en los documentos de la colección.
● db.coll.find({doc.subdoc:value})
Se utiliza para filtrar subdocumentos.
● db.coll.find({name: /^Max$/i})
filtra utilizando expresiones regulares
MongoDB: Comandos CRUD
READ con Filtros avanzados
Comando Read con filtros avanzados y proyección
❏
Proyecciones en MongoDB
● La proyección se utiliza para devolver un conjunto determinado de
campos de un documento. En general devolvemos todos los campos de
un documento, pero es posible que no necesitemos todos.
● Es equivalente en SQL de pasar de hacer un SELECT * a realizar SELECT
nombrecampo.
● Las proyecciones deben ser incorporadas en el segundo parámetro del
comando find. Por ej. db.coll.find({},{"nombre":1}) muestra sólo el
campo nombre y el _id de todos documentos de la coll
● Las proyecciones se realizan indicando el nombre del campo,
con valor 1 si queremos mostrarlo y 0 por el contrario.
MongoDB: sort limit skip
● sort( { campoA: 1 ó -1 , campoB: 1 ó -1 , ... } ) : Especifica el orden en el
que la consulta devuelve documentos coincidentes. El ó los campos por los
cuales ordena pueden contener los valores 1 y -1, estableciendo orden
ascendente y descendente respectivamente. El orden se evalúa de izquierda
a derecha en caso que los valores coincidan.
● limit(num): Especifica el número máximo de documentos devueltos.
● skip(offset) : Saltea la cantidad de documentos especificada.
Permisos y Roles
https://docs.mongodb.com/manual/tutorial/manage-users-and-roles/
https://docs.mongodb.com/manual/reference/built-in-roles/
Crear usuarios y asignar
roles en MongoDB
En MongoDB es posible crear usuarios y asignarles acceso
mediante roles. Veremos cómo crear un usuario y asignarle un rol para
que tenga ciertos accesos limitados a una base de datos.
db.createUser(
Con el rol readWrite el usuario
{ tendrá acceso a los métodos de
user: "escritor",
pwd: "123456", lectura y escritura de la base de
roles: [
{ role: "readWrite", db: "blog" }
datos.
] A continuación debemos verificar
}
) que cada usuario cuenta con los
accesos correctos.
Pruebas de acceso: usuario read
1. Para poder ingresar al shell de mongo con el usuario usaremos los parámetros -u y -p.
mongo -u lector -p 123456
MONGODB
MONGODB
Formato: archivo de texto con las consultas realizadas y la carpeta de la
base de datos comprimida en un zip.
Sugerencia: Si es un archivo en línea, configurar los permisos de acceso.
>> Consigna: Utilizando Mongo Shell, crear una base de datos llamada ecommerce que contenga
dos colecciones: mensajes y productos.