3 videos • 📅 2024-11-05 09:00:00 America/Bahia_Banderas
1:28
2024-11-05 09:25:05
1:33
2024-11-05 11:19:25
55:12
2024-11-05 15:06:49

Visit the MongoDB para desarrolladores course recordings page

                WEBVTT

00:00:01.860 --> 00:00:09.700
de los que ya hicimos hace un momento, por favor testale una, me preguntan como tal.

00:00:11.060 --> 00:00:19.580
Entonces, este sería laboratorio 6 y laboratorio 8, o sea, 6, 7 y 8. Y ya les voy a mandar

00:00:19.580 --> 00:00:25.560
aquí unos ejercicios del laboratorio 8, que ya se los paso un segundo.

00:05:55.260 --> 00:06:07.820
Y ya les voy a pasar el laboratorio actualizado del laboratorio 8, que se quedó por fuera,

00:10:17.960 --> 00:10:34.800
ya está actualizado. Pues este crea una colección con un par de registros de notas y se prueban

00:10:34.800 --> 00:10:42.360
con operadores diferentes valores. Entonces, esto les ayudará a validar eso. Nuevamente,

00:10:42.360 --> 00:10:46.860
rápidamente, actualizárselos a ustedes para que lo tengan igual, pero si lo quieren

00:10:47.940 --> 00:10:51.380
mirando, ahí lo pasé por el chat.

00:11:19.280 --> 00:11:27.040
Listo. Entonces, dame un segundo Eduardo, ya tengo el computador.

00:11:47.500 --> 00:11:51.860
Dame el computador, la máquina.

00:12:02.960 --> 00:12:04.360
Listo.

00:12:04.360 --> 00:12:09.120
Dame Francisco, dame el otro Francisco.

00:12:21.360 --> 00:12:24.920
Listo. Y Carlos, un segundo.

00:12:38.800 --> 00:12:43.240
Listo. Listo. Entonces, ya todos lo tienen y se va.

00:12:44.300 --> 00:12:45.340
Estaré haciendo la prueba.

00:13:10.800 --> 00:13:12.200
Listo.

00:13:43.660 --> 00:13:45.060
Listo.

00:13:45.280 --> 00:13:45.520
Listo.

00:14:32.700 --> 00:14:34.100
Listo.

00:14:52.600 --> 00:14:54.000
Listo.

00:15:22.580 --> 00:15:23.980
Listo.

00:15:52.360 --> 00:15:53.760
Listo.

00:16:21.540 --> 00:16:22.940
Listo.

00:16:51.500 --> 00:16:52.900
Listo.

00:17:21.520 --> 00:17:22.920
Listo.

00:17:51.280 --> 00:17:52.680
Listo.

00:18:18.380 --> 00:18:19.780
Listo.

00:18:45.900 --> 00:18:47.300
Listo.

00:18:53.760 --> 00:19:05.200
Sí, o sea, si se fijan, diría, o sea, en inglés el término es straight forward, ¿no?

00:19:05.200 --> 00:19:13.360
O sea, es bastante, ¿cómo lo diríamos? O sea, no quiere decir que sea sencillo o

00:19:13.360 --> 00:19:18.740
simple porque, no, es que lo sea. O sea, no hay nada, o sea, todo tiene su nivel,

00:19:18.740 --> 00:19:25.280
sus requerimientos, pero es bien claro. Se nota que, al fin y al cabo, es como diseñado,

00:19:25.440 --> 00:19:34.920
pensado en simplificarlo, en que sea sencillo. El Jason ayuda mucho, porque en últimas todo

00:19:34.920 --> 00:19:45.660
esto es Jason. Entonces, straight forward es el término que se me ocurrió a mí para escribir esta

00:19:45.950 --> 00:19:56.110
sintaxis. Bueno, voy a hacer, entonces, aquí es de mi lado el laboratorio, el update. Vamos a ver,

00:19:56.110 --> 00:20:06.050
digamos, si están todavía desarrollando, pues no importa. Yo voy como hablando un poquito,

00:20:06.230 --> 00:20:14.250
más o menos, de lo que veamos como relevante. Entonces, en este update, el update one y el

00:20:14.250 --> 00:20:24.250
update menu, aquí en este caso, pues, hacemos la búsqueda del post que tenga el título post

00:20:24.250 --> 00:20:31.450
title one, ¿sí? Ahí ya veíamos que tengo tres, cuatro posts. Entonces, ahí hicimos una búsqueda

00:20:31.450 --> 00:20:40.010
puntual de este title one. Si yo quiero actualizar este registro, que tiene solamente un like,

00:20:40.300 --> 00:20:53.660
con dos likes, entonces tengo ya esta, esta sintaxis. O sea, el equivalente vendría a ser el,

00:20:57.360 --> 00:21:09.040
¿cómo sería? Update set campo valor, más o menos. Update set campo valor, más o menos,

00:21:09.040 --> 00:21:14.260
el teléfono del equivalente en nuestro modo tradicional. Si yo hago el find después de esto,

00:21:14.640 --> 00:21:22.480
pues, ahí ya tengo un like, como tal. Lo mismo, bueno, ahí ya lo tengo. El absurd, que es,

00:21:22.480 --> 00:21:32.340
pues, que es bastante interesante, o sea, esta es una funcionalidad que refleja las bondades

00:21:32.340 --> 00:21:39.780
de este approach que tiene MongoDB, o la flexibilidad en el esquema de MongoDB.

00:21:44.740 --> 00:21:50.420
Entonces, pues, aquí con el parámetro o el operador absurd, pues, lo que va a ocurrir

00:21:50.420 --> 00:21:58.380
es que me va a insertar el registro si no existe. Entonces, déjame ver si lo tengo aquí completo.

00:22:17.080 --> 00:22:26.760
Esto es una pesadilla, el formato es todo raro. Bueno, vamos a ver si aquí me pasa.

00:22:27.320 --> 00:22:35.240
Entonces, aquí le voy a actualizar, no existe un post title one,

00:22:38.160 --> 00:22:45.640
o sea, solo tengo hasta title cuatro. Si yo le, le, oh, si yo hago la búsqueda,

00:22:56.760 --> 00:23:03.320
si yo hago la búsqueda, ahí fue exitosa. Ahora sí, ya me va a subir el post title

00:23:03.320 --> 00:23:09.120
cinco. Y de una vez ahí se encuentra, vea que el date, pues, acuérdense que aquí estamos

00:23:09.120 --> 00:23:15.520
usando la función date. Entonces, ahí me sale una vez, ¿no?, el registro. Entonces,

00:23:15.560 --> 00:23:24.260
es también importante. Y el update menu, aquí, entonces, este, este, este de aquí,

00:23:24.260 --> 00:23:30.660
este pedazo inicialmente es el filtro. Entonces, este filtro es, si yo quisiera actualizar solo,

00:23:31.440 --> 00:23:39.080
no sé, los, los que tenga que ver con news o la categoría X que se dio, entonces,

00:23:39.140 --> 00:23:46.020
le pondría ese filtro, en Category 2.0, acá. En este caso, al dejarlo vacío, aplica para

00:23:46.730 --> 00:23:58.730
todos, aplica para todos. Entonces, va a actualizar, va a actualizar el, los likes

00:23:58.730 --> 00:24:01.630
de todos los que tengan. Entonces, lo voy a hacer aquí. Yo quiero ver los likes,

00:24:01.830 --> 00:24:07.030
entonces le agrego likes, dos puntos, uno, o sea, alguno es in true. Entonces, muestrenme

00:24:07.030 --> 00:24:11.410
los likes. Entonces, aquí tengo de todos los documentos el número de likes, dos, tres, cuatro,

00:24:11.410 --> 00:24:17.170
cinco. Y con este update menu, lo que voy a hacer es incrementar, el operador de incrementar

00:24:20.350 --> 00:24:26.970
en uno todos los likes. Ahí ya no los actualizó. Yo puedo ver que efectivamente le pegué a los

00:24:26.970 --> 00:24:32.150
que era. Y si lo miro, ahí está, seis, cinco, cuatro. O sea, ahí no lo actualizo. ¿Listo?

00:24:32.450 --> 00:24:37.350
Dense cuenta, pues, ahí cómo usé el file, ¿no?, el filtro para todos. Y aquí le estoy

00:24:37.350 --> 00:24:41.930
diciendo muestrenme solo lo que quiero y le habilite likes, pues, para que podamos visualizar

00:24:41.930 --> 00:24:50.390
el, el cambio que hicimos. Ahora, el delete, pues, bueno, borramos el último delete que

00:24:50.390 --> 00:25:03.230
habíamos creado, el último registro que habíamos creado. Sí, lo, lo pego. Listo,

00:25:03.230 --> 00:25:08.990
hay que haber borrado. Y ya fue, ya no, no tuvo mayor cosa. Si quiero borrar todos los de

00:25:08.990 --> 00:25:13.730
tecnología, entonces, esperen, iremos antes los de tecnología, ¿cuáles son? Entonces,

00:25:15.410 --> 00:25:22.410
categoría, dos, puntos, uno. Entonces, evento, tecnología, ok, hay uno de tecnología,

00:25:22.550 --> 00:25:31.210
entonces, ah, solo hay uno de tecnología. Sí, podríamos decirle, entonces, que me borre

00:25:31.210 --> 00:25:40.630
el de evento que tiene más. Entonces, le voy a decir que me borre el de evento. Entonces,

00:25:40.630 --> 00:25:51.370
lo voy a modificar acá. Le voy a decir, entonces, evento. Event, y listo, ahí me

00:25:51.370 --> 00:26:01.190
muestra. Borrasteos, delete count dos. Sí, yo hago el file, entonces ya se me

00:26:01.190 --> 00:26:08.370
hace así. Ahora, con los diferentes queries, este ejercicio nos deja repasar un poquito

00:26:08.370 --> 00:26:13.470
también porque ya comenzamos a crear como más, como un registro más grande. Entonces,

00:26:13.630 --> 00:26:21.730
vamos, nos cambiamos de base de datos. School database, ah, views, school database. Recuerden

00:26:21.730 --> 00:26:26.510
que ahí no existe, hasta que no le meta datos. Entonces, le insertamos unos datos.

00:26:26.510 --> 00:26:51.250
Entonces, voy a copiarla acá. Voy a copiarlo directo. Listo, ahí quedan los registros

00:26:51.250 --> 00:27:03.810
y voy a usar este file que tenía ya, misito, y voy a ver en la data que me muestren los

00:27:03.810 --> 00:27:10.270
nombres y los ETAs. Porque, digamos, los queries los vamos a hacer contra los ETAs,

00:27:10.390 --> 00:27:15.530
que es como lo numérico y que puede ser interesante. Entonces, que me muestre el

00:27:18.890 --> 00:27:26.530
nombre de la persona, del estudiante. A ver cómo me da. Ah, pero no en posts, sino en,

00:27:27.470 --> 00:27:38.850
cómo se llama la colección, students. Listo, entonces ahí tengo Ali, Bob, Charlie y los

00:27:39.770 --> 00:27:46.350
ETAs. Entonces, aquí comparación. O sea, greater than. Todos estos son files. O sea,

00:27:46.490 --> 00:27:54.250
es el mismo file. Date cuenta que aquí le voy a quitar las etiquetas para que me muestre lo

00:27:54.250 --> 00:28:09.030
que quiero y le dejo solo el centro. Entonces, el filtro es este de aquí. Entonces, ahí

00:28:09.030 --> 00:28:20.030
le voy a decirle, bueno, o sea, ok, llévete, pero ¿cuál es la llave, no? Y el 5. Listo,

00:28:20.430 --> 00:28:34.450
ahí está. Entonces, ahí me muestro solo los dos que tengo. Que son Eva y Bob. Perfecto. Si

00:28:34.450 --> 00:28:42.890
yo quiero, ok, muestrenlos que sean iguales al guionero y que no se hayan graduado. Sería

00:28:42.890 --> 00:28:50.810
esto. O sea, el equal and not equal. Entonces, lo mismo, las sintaxis.

00:29:08.010 --> 00:29:33.710
Entonces, le voy a decir que me encuentren aquellos cuyo gray sea igual a juni. Hacerlo

00:29:33.710 --> 00:29:38.730
que sean juni. Y ahora le digo que no se han graduado. Ah, me vamos a hacer los mismos.

00:29:39.170 --> 00:29:42.830
Aquí yo puedo ver que me vamos a hacer los mismos porque estos dos están sin graduar.

00:29:43.090 --> 00:29:49.890
Y que es lógico por el video. Entonces, bueno, no vale la pena hacerlo. A menos

00:29:49.890 --> 00:29:57.730
que haya otra cosa. No, ahí está. Ahí podría serle con el GPA mayor a 35. Entonces,

00:29:57.730 --> 00:30:18.330
ya solo a ello. O sea, este sería, entonces, GPA greater than 3.5. Entonces, ahí ya solo

00:30:18.330 --> 00:30:31.370
está. Entonces, así los voy mezclando. Este es el in. Es decir, muestrenme algo

00:30:32.450 --> 00:30:41.570
que esté, muestrenme todos los que están. Todos los documentos cuyo parámetro o llave

00:30:41.570 --> 00:30:50.350
o atributo gray sea senior, ozomófono, ozopomo. Uno de esos de ahí. Entonces,

00:30:50.450 --> 00:31:01.650
ya lo copiamos para. Ahí está. Entonces, ahí me voy a mostrar senior, ozomófono,

00:31:02.030 --> 00:31:10.050
senior. Y puedo irlos haciendo más complicado. Dese cuenta que aquí ya le está agregando

00:31:10.050 --> 00:31:19.890
el OR. O la DAD o el GPA. Y lo mismo tengo el AND por ahí. Entonces, ahí está el

00:31:19.890 --> 00:31:26.070
OR o el GPA. Entonces, tengo el AND. Entonces, no, aquí solo muestrenme los que aplique

00:31:26.070 --> 00:31:32.010
puntualmente que tenga senior y que tenga tanto matemáticas como historia en las

00:31:32.010 --> 00:31:40.170
baterías. Entonces, ahí lo mismo. Ahí solo aplica ese. Solo aplica ese registro.

00:31:40.510 --> 00:31:46.950
El REHEX que hablábamos ahorita, lo mismo. O sea, si yo tengo aquí el REHEX, REHEX.

00:31:47.170 --> 00:31:52.130
Entonces, todos los que arranque por A en el nombre. Entonces, solo ALICE o por

00:31:52.130 --> 00:32:01.450
E. Ahí ya puedo hacer el REHEX como lo quiera hacer. La actualización. Entonces,

00:32:01.450 --> 00:32:08.250
vamos a actualizarle a todos los que son juniors un año. Entonces, puedo mezclar.

00:32:08.430 --> 00:32:13.810
O sea, puedo ir mezclando el ejemplo del incremental que hice ahorita. Entonces,

00:32:14.030 --> 00:32:19.930
aquí encontró dos y los actualizó. Y básicamente así. O sea, a todos los

00:32:19.930 --> 00:32:24.630
juniors los voy a graduar. Voy a cambiarle. Por ejemplo, este es muy poderoso

00:32:24.630 --> 00:32:33.970
e importante porque, digamos, hacer esto en una base de datos profesionales

00:32:33.970 --> 00:32:41.870
podría tener ciertos conflictos. O sea, renombrar una columna. Aquí, obviamente,

00:32:41.910 --> 00:32:47.090
es manejar desde la lógica de la aplicación. No se cambia, pero es factible

00:32:47.090 --> 00:32:56.150
también hacer ese reemplazo. Este, por ejemplo, este es interesante. Adicionale

00:32:56.150 --> 00:33:06.810
otro parámetro. Otro valor a uno de los arreglos que está dentro del recurso.

00:33:07.410 --> 00:33:13.310
O remover a todo el mundo el pool de este arreglo. Ese valor que ya no

00:33:13.310 --> 00:33:20.290
se puede agregar. O agregarle a todos estos valores. Entonces, son diferentes

00:33:20.290 --> 00:33:25.990
opciones que me da mucha flexibilidad frente al ejercicio o a las capacidades

00:33:25.990 --> 00:33:33.430
que tengo. Entonces, esos son como los diferentes operadores que tenemos.

00:33:33.430 --> 00:33:42.690
Déjenme, les voy a explicar la diferencia entre push y add to set. El add to set

00:33:44.210 --> 00:33:55.070
es básicamente el, digamos, si yo ya tengo un, un, dónde está el add to set acá.

00:33:55.810 --> 00:34:00.310
Si yo tengo el, el add to set, aquí lo que estoy haciendo es

00:34:00.310 --> 00:34:07.890
definiendo el arreglo. O sea, agrego el elemento al arreglo, pero si el elemento

00:34:07.890 --> 00:34:14.330
no está presente como tal. Entonces, el add to set, el add to set es capaz de,

00:34:14.330 --> 00:34:19.730
de validar si va a haber un duplicado. No, entonces el add to set no me dejaría

00:34:19.730 --> 00:34:24.190
de tener un duplicado. En cambio, el push, el push no valía nada. El push simplemente

00:34:24.190 --> 00:34:28.910
le mete y entonces tú podrías llegar a quedar con duplicados. Entonces, la

00:34:28.910 --> 00:34:34.650
diferencia al final es lo que se conoce como la domesticidad, a well-initness

00:34:36.270 --> 00:34:42.650
para garantizar la integridad del add. Entonces, sí, sí es muy buena

00:34:42.650 --> 00:34:46.650
pregunta. Indudablemente, porque, o sea, todas las preguntas son buenas, porque,

00:34:47.990 --> 00:34:53.290
porque, porque dependiendo en mi caso de uso, pues, podría aplicar el uno o el

00:34:53.290 --> 00:35:00.650
otro y habría que tener ese, ese detalle. O sea, el add to set es solo, solo es

00:35:00.650 --> 00:35:30.630
exitoso si ya, si no existe el, el, el objeto dentro del arreglo de

00:35:32.170 --> 00:35:49.110
nuestra agregación. Un segundo que les voy a perder bien. Ok. Entonces, la

00:35:49.110 --> 00:35:55.610
agregación. Entonces, eso que hicimos antes es limitado a una sola colección.

00:35:55.610 --> 00:36:02.890
O sea, db.collection, find, update, insert, delete. Todo esto es esta conexión.

00:36:07.090 --> 00:36:11.990
Con el aggregation, lo que yo hago es, usando ese lenguaje, ese query language

00:36:12.630 --> 00:36:19.130
que ya, que ya más o menos conocí, pues, puedo extender las capacidades de mis

00:36:19.130 --> 00:36:25.130
consultos. Entonces, con agrega, con agregación, con agregación, pues yo puedo

00:36:27.250 --> 00:36:33.990
procesar documentos y obtener o entregar resultados o cálculos sobre esos

00:36:33.990 --> 00:36:41.070
documentos. MQL en particular es para hacer consultas, nada más. La

00:36:41.070 --> 00:36:47.010
agregación me permite hacer cómputos, hacer cálculos, manipular los datos.

00:36:47.010 --> 00:36:52.470
Entonces, eso es un, eso es bastante poderoso, porque es, digamos, sobre la

00:36:52.470 --> 00:37:00.150
misma, sobre el mismo query, yo puedo obtener resultados de una vez

00:37:00.150 --> 00:37:07.410
entregados a mi aplicación. Entonces, bien metodológica o no tanto

00:37:07.410 --> 00:37:13.510
lógica, pero hago transformaciones dentro de mi propio query. Obviamente es

00:37:13.510 --> 00:37:19.610
mucho más amplia la funcionalidad. Hay varias funciones, ahorita las vemos, son

00:37:19.610 --> 00:37:23.390
muchas, no las veremos, todas las veremos como las claras, pero, pues,

00:37:23.790 --> 00:37:29.970
esas funciones de agregación le permiten a uno, pues, hacer cosas

00:37:30.630 --> 00:37:38.510
poderosas. Al final, o sea, calculado de atributos, hacer comparaciones

00:37:38.510 --> 00:37:44.850
de la data al vuelo. Entonces, esa es una característica que también es

00:37:44.850 --> 00:37:53.110
muy poderosa aquí, porque eso no está tan accesible o no es fácil de

00:37:53.110 --> 00:37:58.850
lograr con un modelo trans. Y poder, que también esto es bien

00:37:58.850 --> 00:38:04.670
interesante, hacer una secuencia de consultas, de operaciones para

00:38:05.150 --> 00:38:09.050
simplificar o transformar los documentos. O sea, de hecho yo ahorita hice una

00:38:09.830 --> 00:38:16.430
con el MQL cuando, pues, no es una agregación como tal, pero para

00:38:16.430 --> 00:38:19.970
ejemplificar, cuando le dije, bueno, muéstrame el nombre, también el GPA,

00:38:20.150 --> 00:38:23.870
todo eso. Entonces, en vez de mostrar todo el documento, yo muestro lo que

00:38:23.870 --> 00:38:30.710
necesito. Entonces, más o menos ese concepto o ese query total lo puedo

00:38:30.710 --> 00:38:36.410
hacer y puedo simplificar y obtener un resultado más fácil reduciendo la

00:38:36.410 --> 00:38:41.930
cantidad de tiempo para leer todos los documentos o para procesar o

00:38:41.930 --> 00:38:48.330
filtrar la información como tal. La definición formal del framework de

00:38:48.330 --> 00:39:00.690
agregaciones que le permite soportar la manipulación compleja de

00:39:00.690 --> 00:39:05.430
etapas, stages, entonces tienen múltiples stages, que se ejecutan

00:39:06.190 --> 00:39:10.130
secuencialmente, ejecutando una operación o un conjunto de operaciones

00:39:10.130 --> 00:39:15.450
dentro de lo que se conoce como un pipeline de etapas, de stages.

00:39:15.910 --> 00:39:19.870
Entonces, son varias etapas en las que yo voy aplicando alguno de los

00:39:19.870 --> 00:39:24.530
operadores del framework para hacer lo que quiera. O sea, filtrar,

00:39:24.530 --> 00:39:30.270
reducir, hacer un match, cosas así. Expresiones, entonces, como tienen

00:39:30.270 --> 00:39:34.230
varias, una gran cantidad de operaciones de funciones y de algoritmos,

00:39:34.550 --> 00:39:37.730
pues estas son las que se pueden usar en cada etapa. Entonces, hay un

00:39:37.730 --> 00:39:43.490
montón de expresiones para procesar o trabajar con los datos.

00:39:44.030 --> 00:39:48.270
Es simple para analizar, hacerle un debug. Entonces, un pipeline

00:39:48.270 --> 00:39:52.930
complejo con muchas etapas se puede fácilmente hacerle un debug

00:39:53.750 --> 00:39:57.510
mirando cada etapa, en vez de mirar todo el pipeline, o sea, se puede

00:39:57.510 --> 00:40:05.970
ir haciendo de a poquitos. Las entradas al pipeline de agregación,

00:40:06.130 --> 00:40:11.090
entonces se puede agregar una sola colección, pero los documentos que

00:40:11.090 --> 00:40:15.610
se agregan a un pipeline no son modificados, que eso es importante,

00:40:17.070 --> 00:40:22.910
sino como que se saca una copia, por decirlo así, y todas las

00:40:22.910 --> 00:40:27.890
entradas van ocurriendo dentro de las etapas que tiene el pipeline como tal.

00:40:28.650 --> 00:40:34.130
Y las salidas se pueden guardar, y eso también es poderoso, se puede guardar

00:40:34.130 --> 00:40:39.150
a una nueva colección, o se pueden entregar a la aplicación,

00:40:39.150 --> 00:40:44.370
o sea, con el cursor que va a construir la aplicación o el

00:40:44.370 --> 00:40:47.850
resultado, pues que va a tomar la aplicación y trabajar con eso.

00:40:47.850 --> 00:40:53.170
Entonces, esto es soportado por el driver, todos los drivers de cualquier

00:40:53.170 --> 00:40:56.850
lenguaje soportan la agregación, y pues eso es de las cosas más

00:40:57.370 --> 00:41:01.750
interesantes que puede llegar a tener este signo.

00:41:03.690 --> 00:41:06.370
Ups, espero que me salte una depositiva.

00:41:11.390 --> 00:41:19.390
Este proceso está diseñado como tal para, o sea, las agregaciones

00:41:19.390 --> 00:41:28.850
para procesar y reconfigurar o modificar la data, las operaciones

00:41:28.850 --> 00:41:34.370
quedan divididas en estas etapas, los operadores se llaman para cada

00:41:34.370 --> 00:41:38.590
una de las etapas, y esto está dentro de la data base, dentro de la base

00:41:38.590 --> 00:41:41.190
de datos, o sea, no es algo que se ejecute por fuera.

00:41:42.470 --> 00:41:48.130
Estas son las etapas más frecuentes, hay más, pero estas son las más

00:41:48.130 --> 00:41:52.630
frecuentes. Entonces, está la etapa del match, que equivale a un

00:41:52.630 --> 00:41:56.510
find con su respectiva query, pero esto es solo una colección,

00:41:56.690 --> 00:42:02.170
esto puede ser múltiples colecciones. La proyección, que es el query

00:42:02.170 --> 00:42:06.450
con los resultados que yo quiero ver, con las columnas o los cajones

00:42:06.450 --> 00:42:13.190
o los campos que yo quiero ver, el sort para el punto sort, que

00:42:13.190 --> 00:42:17.150
justamente lo había mencionado previamente, el limit para solo

00:42:17.150 --> 00:42:21.810
mostrar un limit de resultados, el skip para saltarse a algunos

00:42:21.810 --> 00:42:26.230
de los resultados y el content. Entonces, estas son agregaciones

00:42:26.230 --> 00:42:30.290
que están ahí, que son las más comunes que se pueden usar acá.

00:42:30.290 --> 00:42:34.290
Por eso no me salta este depósito.

00:42:36.830 --> 00:42:45.290
Hay otras disponibles también, como el facer, que permite que múltiples

00:42:45.910 --> 00:42:50.750
pipelines de agregación se procesen dentro de esta etapa con los mismos

00:42:50.750 --> 00:42:54.690
documentos. Entonces, yo cargo documentos y tengo varios pipelines

00:42:54.690 --> 00:42:58.090
que van a hacer de tres a tres al final, pero los meto todos

00:42:58.090 --> 00:43:02.630
en un mismo punto en cada, y los voy a destruir.

00:43:03.730 --> 00:43:08.250
El guionil, pero su nombre lo indica, o sea, es un match con un sort

00:43:10.430 --> 00:43:14.450
que maneja datos que vas a hacer, de acuerdo a la ubicación.

00:43:14.710 --> 00:43:20.290
Por eso es que, por ejemplo, un Airbnb usa MongoDB o una aplicación

00:43:21.930 --> 00:43:26.570
como Rapi o de Domicidios usaba esta clase de aplicaciones.

00:43:27.690 --> 00:43:33.290
Grab Lookup para hacer búsquedas de recursos, el Lookup para hacer

00:43:35.690 --> 00:43:39.230
uniones o joins con otras colecciones de entre la misma

00:43:39.230 --> 00:43:41.870
serie de datos, hacer un filtro y hacer la unión.

00:43:41.870 --> 00:43:53.850
El match para unificar o juntar la salida de los datos de una colección

00:43:53.850 --> 00:43:58.950
sin sobrescribirlos, o sea, puede actualizar o reemplazar documentos,

00:43:59.130 --> 00:44:00.390
o sea, mezclar todo.

00:44:01.190 --> 00:44:06.890
El agrupamiento que es bastante útil y es muy utilizado también,

00:44:06.890 --> 00:44:12.030
porque puede, de acuerdo a alguna expresión o algún ID particular,

00:44:12.970 --> 00:44:15.910
agrupar y tener un documento asociado.

00:44:16.410 --> 00:44:20.750
Se puede ir acumulando, se puede ir sumando, se puede ir sumando.

00:44:21.830 --> 00:44:27.990
El UnumWid, que unifica las colecciones de dos pipelines diferentes,

00:44:28.570 --> 00:44:31.610
o sea, puedo coger lo que me salió de un pipeline con el otro

00:44:31.610 --> 00:44:33.270
y crear una nueva colección.

00:44:33.270 --> 00:44:37.290
Adicional Campus, para adicional documento, media que va pasando

00:44:37.290 --> 00:44:41.270
el Stage, por ejemplo, si quiere ir marcando, este ya procesaba

00:44:41.790 --> 00:44:44.110
por tener un ejemplo, entonces puede ir ahí.

00:44:44.870 --> 00:44:50.890
El Unwine, que desglosa un arreglo, o sea, el contenido de un arreglo

00:44:50.890 --> 00:44:53.990
lo desglosa y lo manda cada un documento independiente.

00:44:54.630 --> 00:44:57.630
Entonces, esas son algunas, pero pues, hay más.

00:44:57.850 --> 00:44:58.890
O sea, no es lo único.

00:44:58.890 --> 00:45:04.610
Hay varias más que son aquí importantes al final.

00:45:07.690 --> 00:45:11.450
Entonces, ¿cómo se hace un query?

00:45:12.310 --> 00:45:15.730
Entonces, en un ejemplo aquí de agregación,

00:45:16.570 --> 00:45:20.730
aquí, digamos, dentro de la presentación hay nuevos ejemplos

00:45:20.730 --> 00:45:23.530
que se pueden hacer, que los pueden hacer ustedes después.

00:45:23.990 --> 00:45:28.070
Entonces, en este caso, se hace insertar en muchos registros

00:45:28.070 --> 00:45:30.570
para hacer el ejemplo.

00:45:33.390 --> 00:45:35.770
Entonces, aquí se hace la agregación.

00:45:36.510 --> 00:45:41.710
Entonces, esta agregación, este es el pipeline.

00:45:41.850 --> 00:45:48.170
Entonces, este find buscaría, ok, búsqueme en la granja uno

00:45:48.170 --> 00:45:53.010
con el nombre uno, mil uno, y bueno, muéstreme eso, perdón.

00:45:53.730 --> 00:45:56.390
O sea, busque la granja uno y muéstreme solo el nombre

00:45:56.390 --> 00:45:59.830
y la cantidad de leche que hay, y ya, y solo muestren a 10.

00:46:00.650 --> 00:46:03.690
Ese sería con un find normal, no me acuerdo.

00:46:03.890 --> 00:46:06.370
Y en aggregate, eso mismo sería el match

00:46:07.310 --> 00:46:09.370
y la proyección de cómo quiero que se muestre.

00:46:09.530 --> 00:46:12.970
O sea, es, desde cuenta que la sintaxis es prácticamente lo mismo.

00:46:13.250 --> 00:46:16.790
Solo le agrego aquí el match y pues que ya no es una operación de find,

00:46:17.190 --> 00:46:19.630
sino una operación de aggregate, ¿sí?

00:46:19.630 --> 00:46:27.690
Y ahí estamos usando, pues, una colección en este ejemplo como tal.

00:46:28.170 --> 00:46:33.110
Entonces, esa sintaxis, esta sintaxis tiene esta característica.

00:46:33.610 --> 00:46:36.910
Le agrega este bracket que antes no estábamos usando.

00:46:37.270 --> 00:46:39.170
Es como una diferencia que habría.

00:46:40.270 --> 00:46:46.410
Y también identifica aquí o utiliza los documentos como tal.

00:46:46.410 --> 00:46:50.490
O sea, cada uno de estos elementos se convierten como en documentos

00:46:50.490 --> 00:46:53.590
dentro de los parámetros que van a ser guardados.

00:46:53.890 --> 00:46:57.530
Entonces, esta operación que tenemos aquí o este ejemplo

00:46:57.530 --> 00:46:59.350
es un ejemplo de find man.

00:46:59.430 --> 00:47:00.690
¿Cómo es que sería un find man?

00:47:01.090 --> 00:47:04.670
Yo le meto una colección y cada uno de estos son unas etapas

00:47:04.670 --> 00:47:06.410
que me van a generar unos resultados.

00:47:06.750 --> 00:47:10.610
Tiene este ejemplo el match con los datos que yo quiero.

00:47:11.190 --> 00:47:15.230
Entonces, le ingreso luego la colección de vacas,

00:47:15.230 --> 00:47:18.110
hago el match, todo lo que se da de la find uno,

00:47:18.570 --> 00:47:21.810
le digo, muéstremelo de este formato, name,

00:47:23.130 --> 00:47:27.030
y limito la cantidad de registros que quiero de la final.

00:47:27.370 --> 00:47:29.710
Entonces, este es el find man.

00:47:29.890 --> 00:47:32.510
Este como tal es un find man creado.

00:47:32.690 --> 00:47:36.410
Si yo hago el resultado aquí, pues, en el find,

00:47:37.010 --> 00:47:39.430
está name, days y mil, cuatro, ta, ta, ta.

00:47:39.790 --> 00:47:41.650
Y en este otro es este el resultado.

00:47:41.650 --> 00:47:46.150
O sea, es, digamos, visualmente similar.

00:47:46.850 --> 00:47:50.330
Igual como estamos haciendo el ejemplo con una sola colección,

00:47:51.970 --> 00:47:59.470
pues, ahí vemos el, o sea, se ve igual.

00:48:00.030 --> 00:48:01.770
El otro elemento es el del grupo.

00:48:02.770 --> 00:48:07.390
Entonces, toma los documentos y los agrupa

00:48:07.390 --> 00:48:09.650
o los segmenta en grupos.

00:48:10.310 --> 00:48:16.650
Entonces, cada grupo se va a constituir como un solo documento.

00:48:17.950 --> 00:48:21.390
Entonces, por ejemplo, aquí el ejemplo es el total milk,

00:48:21.890 --> 00:48:24.490
que sería la sanatoria de unidades de derecho.

00:48:26.510 --> 00:48:28.090
El adición de campos.

00:48:28.230 --> 00:48:29.950
Entonces, tener los documentos de ingreso

00:48:29.950 --> 00:48:32.950
y les adicien un nuevo campo, la grade en este caso.

00:48:34.150 --> 00:48:37.530
Entonces, la función, bueno, aquí estoy ejecutando

00:48:37.530 --> 00:48:42.870
una función para ponerle un valor aleatorio a la edad.

00:48:44.210 --> 00:48:49.090
Y aquí es el resultado unirlo entre dos partners.

00:48:49.410 --> 00:48:51.030
Entonces, el unión whip.

00:48:53.490 --> 00:48:55.250
Le quité el ejemplo.

00:48:57.070 --> 00:49:01.510
Ahora, hay otras expresiones.

00:49:01.890 --> 00:49:05.310
Entonces, esas expresiones que es como la operación

00:49:05.310 --> 00:49:08.230
que yo voy a ejecutar en estos stages,

00:49:09.250 --> 00:49:10.250
pues, hay operadores de todo.

00:49:10.810 --> 00:49:15.170
O sea, variables, usas, operadores, funciones,

00:49:15.850 --> 00:49:17.690
campos, documentos indebidos.

00:49:18.610 --> 00:49:20.490
Hay operadores de todo tipo,

00:49:21.250 --> 00:49:24.630
aritméticos, de fecha, de cadena,

00:49:25.150 --> 00:49:28.690
suma, comparación, condicionales, vulgaras.

00:49:29.190 --> 00:49:33.790
Todos estos son operadores que hay logarítmicos,

00:49:33.790 --> 00:49:37.710
raíz cuadrada, concatenación, filtrado.

00:49:37.770 --> 00:49:39.890
O sea, hay un montón de opciones de ello.

00:49:40.310 --> 00:49:42.270
Lo mismo para el debug.

00:49:42.970 --> 00:49:46.330
Yo puedo, ya que está por el driver, por ejemplo,

00:49:46.830 --> 00:49:50.770
va a habilitar debugs para poder ver lo que está ocurriendo.

00:49:50.990 --> 00:49:54.750
Hay que adicionar component, comentarios, irlo mirando.

00:49:55.050 --> 00:49:58.110
O si estoy usando el MongoDB en Visual Studio,

00:49:58.970 --> 00:50:00.790
también irlo mirando allí como tal.

00:50:02.030 --> 00:50:04.070
Los resultados de un pipeline

00:50:04.770 --> 00:50:07.190
los puedo manejar con el operador out.

00:50:07.530 --> 00:50:11.290
Entonces, toma el stream y los guarda en una colección.

00:50:11.410 --> 00:50:13.430
O sea, esto lo que hace es guardarlo en una colección.

00:50:14.170 --> 00:50:17.550
El merge, es que los mezcla en una sola colección

00:50:17.550 --> 00:50:20.250
y lo permite...

00:50:23.470 --> 00:50:24.590
Si yo...

00:50:24.590 --> 00:50:26.270
Todo esto lo puedo hacer con los drivers,

00:50:26.890 --> 00:50:30.090
con el driver que estoy usando en mi lenguaje.

00:50:30.090 --> 00:50:31.830
O sea, lo que sea.

00:50:32.370 --> 00:50:34.830
El pipeline o Java, sin ningún problema.

00:50:35.510 --> 00:50:37.430
Entonces, aquí hay algunos ejemplos que ya, pues,

00:50:37.430 --> 00:50:39.710
mañana vamos a hacer todos los ejercicios.

00:50:40.230 --> 00:50:43.390
Pero, pues, la colección de la aggregate,

00:50:43.790 --> 00:50:45.230
como lo vamos a usar

00:50:46.090 --> 00:50:48.790
para hacer el premium mismatch,

00:50:49.530 --> 00:50:52.930
para hacer el project como se va a visualizar,

00:50:53.210 --> 00:50:54.330
lo que quisiera ver.

00:50:54.330 --> 00:50:56.090
El unwind,

00:50:57.290 --> 00:50:59.470
para desagregar cada una de las cosas.

00:51:00.750 --> 00:51:03.330
El faceit, para correr varias...

00:51:07.390 --> 00:51:10.330
Para correr varias...

00:51:12.310 --> 00:51:15.330
Para correr varias...

00:51:16.790 --> 00:51:19.910
Pipelines, y multiplicarlos en un solo resultado.

00:51:21.090 --> 00:51:22.210
El merge,

00:51:22.210 --> 00:51:25.210
que sin duplicar.

00:51:28.250 --> 00:51:30.990
Yo puedo aquí también tener varias opciones

00:51:30.990 --> 00:51:32.230
para controlar.

00:51:33.030 --> 00:51:35.210
Cuando hay match, cuando no hay match.

00:51:36.430 --> 00:51:39.450
Hacer reemplazos, mantener lo que ya exista,

00:51:39.670 --> 00:51:44.490
unificarlos, fallar si hay cosas similares, etcétera.

00:51:46.090 --> 00:51:48.050
Bueno, esas son diferentes operaciones que hay allí.

00:51:48.410 --> 00:51:51.210
Entonces, lo que mañana vamos a mirar

00:51:51.470 --> 00:51:53.390
un segundo acá,

00:51:55.410 --> 00:51:57.190
es en este laboratorio,

00:51:57.290 --> 00:51:58.450
entonces, pues, vamos a hacer

00:51:58.450 --> 00:52:00.330
sobre el ejemplo que teníamos de post.

00:52:01.190 --> 00:52:02.530
Hacemos un par de ejercicios.

00:52:02.870 --> 00:52:06.010
Y, después, sobre la base de datos de Airbnb.

00:52:06.430 --> 00:52:08.330
Entonces, que ahí, como ya hay muchos más datos,

00:52:08.870 --> 00:52:10.930
entonces, pues, hacemos unos agrupamientos

00:52:10.930 --> 00:52:12.850
para ver cómo agrupa,

00:52:14.250 --> 00:52:15.590
le ponemos los límites,

00:52:15.810 --> 00:52:17.810
y, bueno, las diferentes opciones que hay

00:52:17.810 --> 00:52:20.750
dentro de agregación como otra.

00:52:22.170 --> 00:52:24.950
Y, bueno, mañana también hablamos de índices,

00:52:25.230 --> 00:52:27.150
y hacemos el ejercicio

00:52:30.310 --> 00:52:32.050
de índices y de esquemas.

00:52:33.030 --> 00:52:36.310
Y yo creo que estos dos, tres últimos laboratorios

00:52:36.310 --> 00:52:38.470
no valen la pena porque, después, los vamos a ver acá.

00:52:38.950 --> 00:52:40.890
Entonces, en el Jupyter, porque quiero, pues,

00:52:40.930 --> 00:52:43.190
que arrancamos ahora también a hacer

00:52:43.190 --> 00:52:45.470
como el ejercicio ya los mismos ejercicios

00:52:47.370 --> 00:52:48.490
a groso modo,

00:52:48.490 --> 00:52:50.410
pero ya con el Python directamente.

00:52:51.530 --> 00:52:54.890
Y que, al finalizar, ojalá podamos,

00:52:54.890 --> 00:52:57.630
aunque se arrancara, hacer esta aplicación en Mii,

00:52:57.870 --> 00:53:00.030
que parece chévere, hacerla allí en los diez

00:53:00.030 --> 00:53:04.250
para ver cómo funciona este mismo ejercicio

00:53:04.250 --> 00:53:05.650
y verlo, pues, en una...

00:53:05.650 --> 00:53:07.270
Pues, es una aplicación de juguete, ¿no?

00:53:07.930 --> 00:53:10.210
Pero que también ayuda y da una idea.

00:53:10.810 --> 00:53:14.210
¿Listo? Entonces, no sé, de pronto,

00:53:14.590 --> 00:53:16.950
¿qué preguntas hay por el momento?

00:53:16.950 --> 00:53:21.390
Y, pues, bueno,

00:53:22.870 --> 00:53:24.790
cuéntenme si tenemos alguna duda,

00:53:24.910 --> 00:53:27.150
que la inquietud, o sí, entonces,

00:53:27.670 --> 00:53:29.830
nos ponemos mañana de nuevo a la hora.

00:53:41.910 --> 00:53:42.950
¿Todo está bien?

00:53:43.210 --> 00:53:44.890
Listo, súper, súper bien.

00:53:44.890 --> 00:53:47.350
Sí, sí hay cosas nuevas

00:53:47.350 --> 00:53:48.990
que de pronto no conocían,

00:53:49.170 --> 00:53:51.230
o todo esto ya lo conocían.

00:54:04.730 --> 00:54:06.790
Bueno, nada, no hay lío.

00:54:07.010 --> 00:54:09.390
Entonces, si quieren, mañana nos vemos

00:54:10.890 --> 00:54:12.410
y continuamos, ¿vale?

00:54:20.490 --> 00:54:21.830
Vale, súper...

00:54:21.830 --> 00:54:24.010
No, ustedes, nos vemos.

00:54:27.990 --> 00:54:29.030
Vale, súper genial.

00:54:29.990 --> 00:54:31.950
Tenedse cuidando, un abrazo, que estén muy bien.

00:54:32.190 --> 00:54:33.690
Gracias, chao, chao.

00:55:11.110 --> 00:55:12.570
Gracias, chao.