El curso de Express. js: módulo 6: operaciones CRUD con Mongoose | Shivendra Raghuvanshi | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

El curso de Express. js: módulo 6: operaciones CRUD con Mongoose

teacher avatar Shivendra Raghuvanshi, Lead Developer and Online Teacher

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      2:47

    • 2.

      Primeros pasos con MongoDB

      2:17

    • 3.

      Instalación de MongoDB para Node.js

      5:01

    • 4.

      Conectar Node.js a MongoDB

      4:14

    • 5.

      Diseña esquemas de datos con Mongoose

      3:55

    • 6.

      Crea y usa modelos de manguesa

      4:46

    • 7.

      Datos persistentes con Mongoose

      3:42

    • 8.

      Domina las consultas en Mongoose

      4:31

    • 9.

      Operadores de comparación de consultas en Mongoose

      5:13

    • 10.

      Operaciones lógicas en consultas de Mongoose

      2:07

    • 11.

      Aprovecha las expresiones regulares en MongoDB

      3:24

    • 12.

      Implementa la paginación con Mongoose

      0:49

    • 13.

      Patrones de actualización en Mongoose: enfoque de consulta primero

      1:47

    • 14.

      Actualiza patrones de Mongoose: actualiza el primer enfoque

      4:01

    • 15.

      Contar documentos con Mongoose

      6:18

    • 16.

      Elimina documentos en Mongoose

      3:07

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

22

Estudiantes

--

Proyecto

Acerca de esta clase

¡Bienvenido al módulo 6: operaciones CRUD con Mongoose! En este módulo, combinaremos el poder de Express.js con MongoDB, una de las bases de datos NoSQL más populares. Con Mongoose, una poderosa biblioteca de modelado de datos de objetos (ODM), aprenderás a interactuar de manera eficiente con MongoDB para realizar operaciones CRUD (crear, leer, actualizar y eliminar).

Comenzarás conectando tu aplicación Node.js a MongoDB y diseñando esquemas robustos para estructurar tus datos. A medida que avanzes, te sumergirás en las consultas de Mongoose, aprenderás a usar operadores y condiciones lógicas, implementarás la paginación y explorarás las mejores prácticas para actualizar y eliminar documentos.

Al final de este módulo, tendrás un conocimiento completo de MongoDB y Mongoose, lo que te permitirá crear aplicaciones dinámicas y basadas en datos con facilidad.

Conoce a tu profesor(a)

Teacher Profile Image

Shivendra Raghuvanshi

Lead Developer and Online Teacher

Profesor(a)
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Bienvenido de nuevo al Módulo seis de ExpressJCurse, operaciones de crédito con Mongoose Esta es una clase de continuación de la serie de cursos Express JS. Mi nombre es Shawn aguanhi, eres instructor de este emocionante viaje al mundo de Mongo Dew Habiendo construido numerosas aplicaciones basadas en datos, puedo decirte que dominar Mongo Dew es una habilidad esencial para los desarrolladores modernos de Bend, y los mangos lo hacen increíblemente poderoso e intuitivo En este módulo, estamos buceando profundamente en Mongo DB y mangos Esto es lo que aprenderá a conectar su aplicación NurJS a MongoDB diseñando esquemas de datos eficientes y flexibles Y luego crear, leer, actualizar y eliminar datos usando modelos de mangos, dominando consultas avanzadas, incluyendo operadores, condiciones lógicas y expresiones regulares Después de eso, aprenderá a implementar funciones como la paginación y el conteo de documentos Y finalmente, explorará las mejores prácticas para administrar y actualizar su base de datos. Esta clase es perfecta para desarrolladores que quieran integrar Mongo DB en sus aplicaciones sin JS Si ha completado los módulos anteriores en ABI descansantes y Express Js, todos estamos dispuestos a comenzar No se requiere experiencia previa con MongoDB. Empezaremos desde lo básico y poco a poco avanzaremos hacia temas más complejos. Al final de este módulo, tendrá las habilidades para construir aplicaciones robustas basadas en datos. Ya sea que esté creando un proyecto personal pequeño o una aplicación de producción a gran escala. MongoDB y Mongoose le darán la flexibilidad y eficiencia que necesita Finalmente, en este módulo, nuestro proyecto se construye alrededor una aplicación independiente llamada Mongo Demo Este proyecto incluye tres ejercicios enfocados en los que diseñará esquemas y modelos mongoo para estructurar sus datos de manera efectiva, escribir y ejecutar operaciones de multitudes para administrar datos dinámicamente e implementar técnicas avanzadas como filtrado de consultas, paginación y actualización de documentos usando Estos ejercicios te ayudarán a generar confianza al trabajar con Mongo Deb y mangos, preparándote para manejar operaciones de datos complejas en aplicaciones del mundo real No puedo esperar para ayudarte a dominar Mongo Di Bi y mangosta. Vamos a sumergirnos y comencemos. Nos vemos en la primera conferencia. 2. Primeros pasos con MongoDB: Bien, así que volvamos a nuestra aplicación Fairwheels, hasta ahora hemos almacenado la lista de empresas en una matriz en No es así como construimos aplicaciones del mundo real porque cuando el servidor se reinicie, vamos a perder todos los datos en la memoria Entonces por eso necesitamos almacenar nuestros datos en una base de datos. Ahora, como te dije antes, al construir aplicaciones con Node y Express, tienes una gran cantidad de opciones en cuanto a la base de datos que quieres usar. En este curso, vamos a usar Mongo DB porque ese es un sistema de gestión de bases de datos muy popular, y se usa con bastante frecuencia en aplicaciones construidas con Node y Express Entonces, si nunca antes hemos trabajado con Mongo DB, no te preocupes Lo vas a aprender poco a poco o las siguientes secciones. Ahora, solo para establecer la expectativa correcta, Mongo be realmente requiere su propio rumbo Entonces no vas a ser un Mongo Be experto al final de ver este curso, pero vas a aprender lo suficiente para hacer el trabajo Ahora bien, si nunca antes hemos trabajado con Mongo DB, Mongo DB es básicamente lo que llamamos un documento o ninguna base de datos SQL Es diferente de las bases de datos relacionales tradicionales como SQL Server o MySQL y así sucesivamente Entonces en Mongo B, no tenemos el concepto de tablas, esquemas, vistas, registros, columnas. Es diferente. Entonces, a diferencia de las bases de datos relacionales, donde has diseñado tu base de datos con anticipación, en Mongo DB, no existe tal cosa como el esquema o Simplemente guarde sus objetos JCN en Mongo DB. Entonces aquí tenemos una variedad de empresas. Simplemente podemos almacenar todos los objetos de esta matriz y una colección en Mongo DB, tan simple como eso Esto también significa que al costear nuestros datos, obtenemos objetos JCN de Mongo DB, y simplemente podemos devolver esos objetos al cliente Entonces no hay transformación. Eso es suficiente introducción sobre Mongo DB. A continuación, te voy a mostrar cómo instalarlo en tu máquina. 3. Instalación de MongoDB para Node.js: En esta conferencia, te voy a mostrar cómo instalar Mongo DV en Windows Así que abre tu navegador y dirígete a mongodv.com. En esta página, en la parte superior izquierda, da clic en el producto, y luego aquí, selecciona la opción Adición a la comunidad. Este es el servidor Mongo DV que ejecutamos en esta máquina. Desplázate hacia abajo, comprueba la versión y asegúrate de que Windows esté seleccionado. Ahora descarga este MSI. Entonces, vamos a guardar esto. Todo bien. Y ahora vamos a ejecutarlo. Da clic en instalar de todos modos. Entonces esto nos da un instalador muy sencillo. Sigamos adelante. A continuación, acepte el acuerdo de licencia. A continuación, y haga una instalación completa. Nuevamente, siguiente, ahora en esta página, hay una casilla de verificación aquí Instalar MongoiVKMPas. Estos son los datos de la aplicación cliente que utilizamos para conectarnos a nuestro servidor MongoDB Miramos nuestras bases de datos. A continuación, instale Todo bien, se instala Mongo DB Y también se lanza nuestra brújula Mongo DB, hablaremos de ello más adelante Así que ahora vamos a abrir el Explorador de archivos y vamos a Archivos de programa, y luego Mongo DB. Siguiente servidor. Ahora, la versión que estoy ejecutando es 7.0. Lo más probable es que, en el futuro, cuando estés viendo esto, la versión será diferente. Entonces selecciona esa carpeta y luego Ben y luego finalmente Mongo D. Ahí está Mongo Damon, que es un servicio que se ejecuta en Y ese es básicamente nuestro servidor Mongo DB. Ahora bien, lo que quiero que hagas es seleccionar este camino aquí. Ahora en la barra de búsqueda, busca ajustes avanzados del sistema. En esta página, tenemos que ir a las variables de entorno aquí. Y luego de esta lista de variables del sistema, seleccione Ruta, haga clic en Editar y luego nuevo. Y aquí caminamos el camino que copiamos antes. Esta es la ruta al directorio que contiene nuestro servidor Mongo DV ¿Bien? Ahora en esta página, seleccione también Bien. Ene. Ahora abre PowerShell y ejecuta Mongo D. Si no ves esta salida y obtienes un error como Mongo D no es reconocido, necesitas reiniciar necesitas Así que cierra todas las ventanas de PowerShell que actualmente están abiertas en tu máquina y luego ábrela. Entonces cuando ejecutas Mongo D, deberías ver una salida como esta Por defecto, vas a obtener un error. Así que aquí, mira, obtenemos esta excepción, directorio de datos de ruta inexistente, C, columna barra diagonal reversa datos TV no encontrada Entonces, por defecto, Mongo DV almacena tus datos en esta carpeta. Así que vamos a crear esta carpeta. MKDIR, C datos de barra diagonal reversa, TV de barra diagonal reversa. Bien. Ahora vamos a ejecutar Mongo E una vez más. Esta vez no obtenemos esa excepción. Y el último mensaje está esperando conexiones en el puerto 27017 Por lo que esto verifica que el servidor Mongo DV se esté ejecutando. Ahora podemos ir a Mongo DV Compass. Entonces aquí está la página para comenzar. Eso es conectar al host. Necesitamos especificar el servidor Mongo DV al que queremos conectarnos Así que deja los valores predeterminados como están. Entonces el nombre de host es host local y puerto es 27017. Ahora, vamos a conectarnos. Hermoso. Estamos conectados con éxito a nuestro servidor Mongo DV Entonces aquí por defecto, tenemos tres bases de datos, Local, Armin y Config. Estas son para que MongaTV haga su trabajo. No vamos a trabajar con estas bases de datos. 4. Conectar Node.js a MongoDB: Bien. Ahora vamos a crear un nuevo proyecto para esta sección. Entonces voy a crear una nueva carpeta llamada Mongo Demo. Vamos a entrar en esta carpeta y ejecutar NVM en ella con una bandera de Estados Unidos. Hermoso. Ahora necesitamos instalar un paquete de nudos llamado Mangoose Mangoose nos brinda un EPI simple para trabajar con una base de datos Mongo DB Bien, para que puedan ver al momento de grabar este video, estoy usando Mongos versión 7.5 0.0 Entonces, si quieres asegurarte de tener la misma experiencia que la que voy a mostrar en este video, te animo mucho a que instales exactamente la misma versión. Bien, agreguemos un nuevo archivo aquí, index dot JS. Lo primero que tenemos que hacer es conectarnos con Mongo Deb. Entonces cargaremos este módulo de mangos. Y guárdala en los pongos constantes. Ahora bien, este objeto tiene un método llamado connect. Utilizamos esto para conectarnos a Mongo DB. Ahora aquí pasamos una cadena de conexión que es Mongo DB, Allan 127.0 Columna 27017. Esto hace referencia al Mongo DV que instalamos en esta máquina Cuando desee implementar su aplicación en un entorno de producción, va a tener una cadena de conexión diferente para la producción. Anteriormente en esta sección sobre Express, te dije cómo administrar varios ajustes de configuración para diferentes entornos. En este video, no estamos lidiando con ese nivel de complejidad. Así que he codificado una cadena de conexión aquí. Pero en la aplicación real, su cadena de conexión debe provenir de un archivo de configuración. Así que aquí está nuestro servidor Mongo DB. Ahora, después de eso, agregamos el nombre de nuestra base de datos. En este caso, voy a utilizar una sencilla base de datos de juegos infantiles. Ahora no hemos creado esta base de datos, y no importa. La primera vez que escribimos algo en esta base de datos, Mongo E B creará automáticamente esta base de datos por nosotros. Bien, así es como nos conectamos a una base de datos Mongo I B. Ahora, este método connect devuelve una promesa. Entonces podemos llamar cuando se cumpla esta promesa. Eso significa que nos hemos conectado a una base de datos Mongo Eb. Así que aquí podemos hacer un sencillo registro de puntos de consola conectado a Mongo I B. Y por cierto, aquí estoy usando Tensole dot log por simplicidad Como te dije en la sección sobre Express, en una aplicación real, es mejor usar el módulo de depuración porque con eso, tienes más control sobre la cantidad de estos mensajes de depuración que quieres ver Pero en esta sección, no queremos distraernos con demasiada complejidad Solo queremos enfocarnos en Mongo DB. Entonces esto es para escenario donde nos conectamos exitosamente a una base de datos Mongo IB Pero, ¿y si algo sale mal? Queremos atrapar ese error. Aquí, obtenemos un objeto de error y luego lo mostramos en la consola. Entonces error de punto de consola. Conexión a MangiibFail. Y luego agregamos el objeto error. Hermoso. Ahora, vamos a ejecutar esta aplicación. Así que de vuelta en la terminal, punto índice de luna norte JS. Entonces podemos ver que estamos conectados con éxito a Mongerib. 5. Diseña esquemas de datos con Mongoose: Así que nos hemos conectado a nuestra base de datos Mongo DB. Ahora lo siguiente que tenemos que hacer es crear un esquema. Utilizamos un esquema para definir la forma de los documentos dentro de una colección en Mongo DB. ¿Qué quiero decir con eso? Bueno, volvamos a nuestra brújula Mongo DB. He creado esta base de datos aquí, tierra. Y en esta base de datos, tenemos esta colección llamada cursos. Una colección en Mongo DB es como una tabla en una base de datos relacional Ahora en esta colección Colección de maldiciones, tenemos tres documentos Un documento en Mongo IB es similar a una fila en una base de datos relacional Entonces en bases de datos relacionales, tenemos tablas y filas En Mongo DB, contamos con colecciones y documentos. Ahora echemos un vistazo a esta colección. Entonces aquí hay un ejemplo del documento. Cada documento es un contenedor de pares de valores clave. Entonces aquí tenemos subrayado ID, que es un identificador único Para cada documento, tenemos etiquetas, que es una matriz de pares de valores clave. Tenemos nombre, autor, es publicado, fecha y versión. Ahora, no te preocupes por cómo creé esto. Eso lo vas a aprender en las próximas conferencias. Ahora en Mangoose, tenemos este concepto llamado schema. Esto es solo específico de la mangosta. No es parte de Mongo DB. Utilizamos un esquema en mangosta para definir la forma de los documentos en una colección Mongo DB Entonces usamos eso para definir cuáles son las propiedades que tenemos en este documento. Ahora déjame mostrarte cómo crear un esquema. Así que de vuelta en el código VS, vamos a definir una constante, llamarlo esquema de curso. Este esquema define la forma de los documentos del curso en nuestra base de datos Mongo DB Así que establecemos esto en una nueva clase de esquema Mongoose. Aquí, al crear una instancia de esta clase, pasamos un objeto. Y en este objeto, especificamos los pares de valores clave que deberíamos tener en los documentos del curso. Entonces quieres que cada curso tenga una propiedad name, y el tipo de esta propiedad debe ser una cadena. Del mismo modo, cada curso debe tener un autor de tipo string. Quiero que nuestros cursos tengan X. Y aquí, quiero tener una matriz de cuerdas. No técnicamente cuando esto se almacena, cada objeto de esta matriz será un par de valores clave. La clave será el índice y el valor será esa cadena. Ahora también quiero que cada curso tenga una fecha propiedad de tipo fecha. Ahora también podemos darle a esto un valor predeterminado, por lo que podemos cambiar esto de fecha a un objeto. Este objeto es una propiedad type que establecemos hasta la fecha, y también tiene una propiedad llamada default, y configuramos este punto a la fecha ahora. Con esto, no tenemos que especificar una fecha a la hora de crear un objeto de curso. Fecha que ahora se utilizará como valor predeterminado para esta propiedad. Y por último, quiero que cada curso tenga una propiedad llamada que publiqué, que sería una booleana Así que aquí está la lista de tipos que podemos usar al crear un esquema. Tenemos cadena, número, fecha, búfer, que utilizamos para almacenar datos binarios, booleanos, ID de objeto, que se utiliza para asignar identificadores únicos y array A continuación, te voy a mostrar cómo crear y guardar un documento basado en el esquema del curso. 6. Crea y usa modelos de manguesa: Así que aquí está nuestro esquema de curso que define la forma de los documentos del curso en una base de datos Mongo De Ahora, necesitamos compilar esto en un modelo. ¿Qué es un modelo? Bueno, antes en el curso, hablé del concepto de clases y objetos. Entonces como ejemplo, te dije que podemos tener una clase llamada humana, podemos tener un objeto como Shen. Entonces un objeto es una instancia de una clase. Una clase es solo un plano, pero un objeto es un instante de ese plano Ahora en esta aplicación, queremos tener una clase llamada curso. Y entonces deberíamos poder crear instancias de esa clase, como un curso de nodo. Y luego podemos guardar ese curso de nodo en nuestra base de datos. Entonces, para crear un curso tipo clase, necesitamos compilar este esquema en un modelo. Entonces así es como lo hacemos. Este objeto mangosta que tenemos tiene un método llamado model que toma dos argumentos El primer argumento es el nombre singular de la colección para la que está este modelo. Entonces en nuestra base de datos Mongo EB, quieres tener una colección llamada cursos, ¿verdad Entonces aquí hay un curso de nombre singular. El segundo argumento es un esquema que define la forma de los documentos en esta colección. Entonces ese es el esquema del curso. Ahora con esto, obtenemos una clase de curso en nuestra aplicación. Entonces podemos establecer esto a un curso llamado constante. Y tenga en cuenta que aquí estoy usando la convención de nomenclatura paceal. Entonces la primera capa por supuesto es mayúscula, eso significa que esta es una clase. No es un objeto. Ahora podemos crear un objeto basado en esta clase. Así que vamos a crear un objeto de curso. Y aquí, estoy usando notación de mayúsculas y minúsculas porque la primera letra de la primera palabra, en este caso, por supuesto es minúscula Entonces usamos Camel case para nombrar nuestros objetos y pacelcase para nombrar nuestras clases Entonces este curso, establecemos esto a un nuevo curso, y en esta función constructora, pasamos un objeto, inicializamos nuestro objeto de curso Así que vamos a establecer las propiedades de este curso. Voy a poner el nombre al curso Express JS. Establecer al autor a Shiv en. Establezca el texto en una matriz de dos cadenas. Para que podamos tener Express y digamos de nuevo. Ahora bien, esto es algo interesante sobre mango o no las bases de datos SQL en general. Se puede ver que un documento en Mongo DB puede ser un objeto complejo Así que aquí, esta propiedad de etiqueta es una matriz de cadenas. No tenemos algo así en las bases de datos relacionales En otras palabras, una fila en una base de datos relacional tiene atributos simples Si quieres modelar esta estructura en una base de datos relacional, necesitas tres tablas, cursos, etiquetas y una tabla intermedia llamada etiquetas de curso porque aquí tenemos una relación de muchos a muchos entre cursos y Mongo IB o ninguna base de datos SQL en general, no tenemos esta estructura No tenemos que definir estas tablas. No tenemos que guiarlos. Simplemente creamos nuestros objetos y los almacenamos en una base de datos. Por eso los llamamos esquema menos. No tienen esquema. Entonces aquí está nuestra propiedad fiscal. Ahora la otra propiedad que tenemos es fecha. Pero antes, definí esto para tener un valor predeterminado. Entonces no voy a poner esto aquí, y se publica la última propiedad. Yo también voy a establecer esto, cierto. Así que recapitulemos rápidamente. Una vez que tenemos un esquema, necesitamos compilarlo en un modelo, lo que nos da una clase. A continuación, podemos crear un objeto basado en esa clase. Y este objeto se mapea a un documento en una base de datos Mongo DB A continuación, te voy a mostrar cómo guardar este documento en nuestra base de datos. 7. Datos persistentes con Mongoose: Todo bien. Así que aquí está nuestro objeto de curso que se mapea a un documento de curso en Mongo DV Ahora, guardemos esto en nuestra base de datos. Entonces este objeto de curso tiene un método llamado save. Ahora aquí estamos tratando una operación asíncrona porque va a tomar algún tiempo guardar este curso en la base de datos porque vamos a acceder al sistema de archivos Por eso estamos ante una operación asíncrona. El resultado de esta operación estará listo en el futuro. Entonces este método devuelve una promesa. Podemos aviarlo y obtener el resultado. Este resultado es el objeto real del curso que se guarda en la base de datos. Entonces, cuando guardemos este curso en Mongo DB, Mongo DB va a asignar un identificador único a este objeto del curso con este documento del curso Ahora con esto, podemos ver el IRE que es asignado por Mongo DB Así que vamos a conectarlo en el resultado de la consola. Como te dije antes, cada vez que uso un peso, tu código debería estar dentro de una función asíncrona Entonces voy a definir una función aquí, st, crear curso. Ponemos esto a una función de error de sincronización como esta y ponemos todo este código dentro de esta función. Entonces creamos un objeto de curso, lo guardamos y luego mostramos el resultado en la consola. Y finalmente, aquí llamamos crear maldición. Guardar. Ahora, de vuelta en terminal, en esta sección, voy a ejecutar esta aplicación usando Node en lugar de norma porque sin nadie, cada vez que haga un simple cambio en el código, eso dará como resultado la creación un nuevo documento en nuestra base de datos Mongo DB Así nodo índice punto js. Hermoso. Nuestro curso se guardó en la base de datos, y aquí está el documento que realmente está almacenado en nuestra base de datos Mongo. Mira, Mongo DB asignó este ID de subrayado de propiedad, y se establece en este identificador único Ahora volvamos a Mongo DB compass. Así que vamos a refrescarnos aquí. Aquí está nuestra base de datos de juegos infantiles. Tenemos esta colección de cursos, y en esta colección, tenemos un documento, ¿verdad? Entonces esta es una belleza de bases de datos Mongo DB o nose EQUL. A diferencia de las bases de datos relacionales, no tuvimos que crear una tabla No tuvimos que escribir esa tabla. Simplemente creó un documento y lo almacenó en nuestros datos Mongo DB Así que de vuelta al tablero, modifiquemos estos valores y creemos otro documento. Porque en la próxima conferencia, te voy a mostrar cómo consultar documentos. Entonces cambiemos esto al curso ReactJS, y agregamos dos etiquetas, react dot js y front end Guardar. De vuelta en la terminal, detengamos este proceso y volvamos a ejecutar esta aplicación. Aquí está nuestro segundo documento. Y si nos fijamos en MongoiVKMpas, vamos a refrescar vamos Mira, tenemos dos documentos en nuestra colección de cursos. Hermoso. Entonces, a continuación, te voy a mostrar cómo consultar documentos. 8. Domina las consultas de Mongoose: Bien ahora, déjame mostrarte cómo manejar documentos de una base de datos Mong Wo DV Entonces aquí, voy a crear otra función Pas G cursos. Le dijimos esto a la función de error asíncrono. Y luego voy a sustituir la convocatoria para crear curso por cursos G. Ahora, vamos a implementar esta función. Entonces esta clase de curso que definimos anteriormente tiene un montón de métodos para quering documentos Tenemos hallazgo para obtener una lista de documentos. Tenemos hallazgo por identificación, que es bastante autoexplicativo. Y tenemos encontrar uno, que devuelve un solo documento. Ahora tenemos algunos métodos más finos aquí, pero no te preocupes por ellos. Los usamos para encontrar un documento y luego para eliminarlo o actualizarlo. Los vamos a ver más adelante en esta sección. Entonces veamos el método fino. Como puede ver, este método devuelve una opción de consulta de documento. Ahora bien, este objeto de consulta de documento es como una promesa. Entonces tiene un método then, para que podamos avisarla y obtener el resultado Y con esto, obtenemos todos los cursos en nuestra base de datos. Así que vamos a mostrarlo en la consola. Ahora de vuelta en el índice de nodo terminal a Js. Así que mira, obtenemos una matriz con dos objetos. Aquí está nuestro primer plato, ese es el curso express ts, y aquí está el segundo plato. Ese es el curso de reaccionar a Gs. Hermoso. Ahora también podemos pasar un filtro aquí. Entonces como primer argumento al método fine, pasamos un objeto y en este objeto, agregamos uno o más pares de valores clave para el filtrado. Entonces digamos que queremos obtener sólo los cursos de Shevn. Así que ponemos autor a Shevn podemos pasar otra propiedad. Otro filtro se publica a través de. Entonces con este filtro, solo obtenemos los cursos publicados por cosido, y así es como llegamos los documentos. Pero aquí también podemos ordenar nuestros documentos. Podemos establecer un límite en el número de documentos que se devuelven. También podemos seleccionar propiedades específicas en el documento. Digamos que nuestro curso documenta allí 50 propiedades, tal vez no queremos devolver todas estas propiedades al cliente, quizás quieras devolver solo su nombre. Entonces déjame mostrarte cómo construir una consulta más compleja. Anteriormente, vio que este método fino devuelve un objeto de consulta de documento. Mira, consulta de documentos, ¿verdad? Así que aquí podemos personalizar esta consulta. Podemos aplicar un límite. Digamos, podemos ordenar los documentos. Aquí pasamos un objeto. Y en este objeto, agregamos uno o más pares de valores clave para ordenar. Entonces digamos que queremos ordenar estos documentos por su nombre. Ponemos nombre a uno. Uno indica orden ascendente. Queremos ordenar estos documentos en orden descendente, usa menos uno. Como te dije, puedes tener múltiples pares de valores clave aquí. También tenemos otro método select, y con esto, podemos seleccionar las propiedades que queremos que se devuelvan. Por ejemplo, digamos que solo queremos obtener el nombre y la propiedad fiscal de cada documento del curso. Entonces establecemos nombre a uno y texto a uno también. Ahora vamos a ejecutar esta aplicación, vuelta en nodo terminal, índice Js. Así que mira, ahora los objetos del curso que obtenemos tienen sólo tres propiedades. Etiquetar el nombre, seleccionamos estas dos propiedades, pero también obtenemos la propiedad ID subyacente que es asignada por Mongo DB por defecto También, estos documentos, están ordenados por su nombre en orden descendente. Entonces el curso react GS viene primero, aunque creamos este curso más tarde. Entonces así es como construimos consultas. En la próxima conferencia, te voy a mostrar cómo hacer un filtrado más complejo. 9. Operadores de comparación de consultas en Mongoose: Entonces, en la última conferencia, aprendiste a usar el método fino para filtrar documentos. O las próximas conferencias, te voy a mostrar cómo construir consultas más complejas. Ahora bien, si nunca antes has trabajado con Mongadb, encontrarás la sintaxis que usamos para construir consultas, un poco desconocidas o extrañas, y eso lo entiendo totalmente porque he estado Pero en esta conferencia, voy a mostrarte una técnica recuerda esta sintaxis, y luego te darás cuenta de que en realidad es muy fácil. Entonces el tema para esta conferencia son los operadores de comparación. Entonces en Mongo DV, tenemos un montón de operadores para comparar valores Dado que la mangosta se construye sobre el controlador Mongo DV, estos operadores estándar que Mongo Dee entiende, también están disponibles Entonces aquí están los operadores de comparación que tenemos en Mongo DB Tenemos EQ, que es la abreviatura de igual, tenemos NE, que es la abreviatura de no igual. Tenemos GT, que es la abreviatura de mayor que tenemos GTE, que es la abreviatura de mayor o igual a De igual manera, tenemos LT, que es la abreviatura de menos de. Tenemos LTE, que es la abreviatura de menos o igual a. También tenemos N y NIN, que es la abreviatura de no N. Ahora bien, para el propósito de esta conferencia, imaginemos que nuestros cursos tienen una propiedad de precio. Voy a comentar este fino método. Digamos que queremos conseguir todos los cursos que son $10. ¿Cómo hacemos esto? Entonces llamamos bien, pasamos un objeto para filtrar, establecer el precio en diez, así que esto devuelve solo los cursos que son $10. Ahora bien, ¿y si queremos cursos que son más de $10? ¿Cómo podemos expresar esto usando objetos JCN en JavaScript? Bueno, ya sabes que en JavaScript, un objeto es básicamente una colección de pares de valores clave. Entonces aquí, nuestra clave es el precio y nuestro valor es diez. Con un simple valor, no podemos expresar un concepto de más o más de diez. Entonces, para poder expresar el concepto de más de diez, necesitamos pasar un objeto. Aquí, este objeto es nuevamente un contenedor para pares de valores clave. Ahora aquí, puedo usar uno de estos operadores como clave. Déjame usar mayor que operador aquí. Do sine indicará que se trata de un operador. GT que es mayor que, y establecemos este valor en diez. Entonces mira lo que hice. Sustituí un valor simple como diez por un objeto para expresar un concepto, el concepto de mayor de diez. Ahora podemos cambiar este operador a mayor o igual a. Si quieres cursos que son $10 en el resultado también. Llevemos esto al siguiente nivel. ¿Y si queremos obtener los cursos que son de 10-20 dólares? Nuevamente, podemos usar otro operador, por lo que menos o igual a $20. Entonces así es como podemos usar estos operadores de comparación para consultar documentos. Ahora veamos otro ejemplo. Imaginemos que queremos obtener cursos que sean $10 o $15 o $20. Entonces voy a encomiar esto. Empecemos de cero. Entonces llamamos a buscar, pasar un objeto para filtrar, volver a establecer el precio. Si utilizo diez, sólo puedo comparar la igualdad con diez. Eso no queremos. Queremos cursos que sean $10 o $15 o $20. Entonces reemplazamos este valor con un objeto para expresar nuestra consulta. Ahora aquí, utilizamos un operador que es dólar en. Ahora bien, ¿qué usaríamos para el valor? Aquí, queremos expresar una consulta donde los cursos son $10 o $15 o $20. Entonces aquí estamos tratando tres valores. ¿Qué constructo Javascript usamos para expresar múltiples valores? Usamos una matriz, ¿verdad? Entonces diez, 15, 20. A ver lo que he hecho hasta ahora. No he memorizado nada. Solo trato de pensar lógicamente, ¿cómo podemos usar cómo construye Script para expresar un concepto para expresar una consulta Entonces estos son los operadores de comparación. Y en la siguiente conferencia, vamos a mirar a los operadores lógicos. 10. Operaciones lógicas en consultas Mongoose: En esta conferencia, te voy a mostrar cómo usar los operadores de consulta lógica. Así que aquí está nuestra consulta original. Estamos obteniendo todos los cursos que coincidan con este criterio. Son de la autoría de Shevin y se publican. ¿Y si queremos obtener las poses que publica Shevin o los cursos que se publican Entonces podemos tener cursos que se publiquen, pero no son de la autoría Ahí es donde necesitamos al operador. Entonces aquí están los operadores lógicos que tenemos. Tenemos R y M. Vea cómo podemos usar estos operadores. Entonces voy a encomiar esto. En cambio, vamos a llamar al método fino sin ningún filtro. Después de eso, llamamos al método R. Ahora, aquí tienes una pregunta para ti. ¿Qué constructo Java strip usamos para almacenar múltiples valores? Usamos una matriz, ¿verdad? Así que aquí tenemos que pasar una matriz, y en esta matriz, agregamos dos objetos. Cada objeto es un filtro, al igual que el objeto filter que pasamos al método fine. Entonces en este primer objeto de filtro, agregamos autor. Ponemos esto a Shi en un segundo, agregamos esto publicado, y lo pusimos en verdad. Ahora con esto, conseguiremos cursos que son autoría de Shevin o cursos que se publican El operador lógico N es exactamente el mismo. Pero en lugar de usar el método, usamos el método. Y con esto, pasamos una matriz de objetos de filtro. Ahora bien, esto es técnicamente similar a pasar un objeto de filtro al método find. Pero a veces en consultas más complejas, puede encontrar un lugar para usar el método N. A continuación, vamos a mirar las expresiones regulares. 11. Aprovecha las expresiones regulares en MongoDB: Así que volvamos a nuestra consulta original, en este ejemplo, estamos obteniendo cursos cuyo autor es exactamente la cadena. Aquí, si tenemos un curso con autores como Shevin o Shevin a Guanhi, esos cursos no serán Entonces, si quieres tener más control sobre el filtrado de cadenas, necesitas usar una expresión regular. Déjame mostrarte cómo funciona eso. Entonces voy a comentar esto. Digamos que queremos obtener cursos cuyo autor comience con Chewn así es como escribimos esta consulta Así que encuentra como objeto, establece el autor. Ahora en lugar de pasar una cadena aquí, pasamos tu expresión regular. Entonces agregamos un slash, agregamos un patrón que vamos a modificar en un segundo, y otro slash Entonces esta es una sintaxis para representar una expresión regular. Ahora en expresiones regulares, podemos usar este carácter de quilates para representar una cadena que comienza con algo. Aquí, puedo agregar a Shen. Entonces esta expresión regular representa una cadena que comienza con Shen. Así que mientras el otro empiece con Shen, no importa lo que tengamos. Esos cursos serán retirados. Ahora bien, ¿y si queremos buscar cursos cuyo autor termine con una cadena dada? Digamos que termina con Ragan G. Entonces así es como escribimos esta consulta Bien, como objeto, establecemos al autor a una expresión regular para slash pattern Y el patrón que usamos aquí es Rugen hi Dasg. Un seno de muñeca en expresiones regulares indica el final de una cuerda. Entonces aquí estamos buscando cursos cuyo autor termine con abonci Ahora bien, esta consulta es sensible a mayúsculas y minúsculas. Si quieres que sea insensible a mayúsculas y minúsculas, agregas una I al final Y por último, veamos el último ejemplo. ¿Y si quieres buscar poses cuyo autor contenga la palabra nave? Así que el turno puede ser al principio. Puede estar en el medio, o puede estar al final. Entonces déjame mostrarte cómo escribir esta consulta. Entonces llamamos bien como objeto, autor, expresión regular. Aquí está nuestro patrón. Punto, estrella, cambio punto estrella. Entonces esa estrella en una expresión regular significa que podemos tener cero o más caracteres. No nos importa cuáles sean esos personajes. Entonces con este patrón con esta expresión regular, podemos tener cero o más caracteres antes o después del turno. Y una vez más, si quieres que este caso sea insensible, ponemos una I al final Por supuesto, puedes usar expresiones regulares más complejas. La explicación de las expresiones regulares de JavaScript está más allá del alcance de este curso. Entonces, si quieres aprender más sobre las expresiones regulares, solo lee un tutorial sobre expresiones regulares de JavaScript. 12. Implementa la paginación con Mongoose: Entonces en esta consulta, estás filtrando nuestros cursos y escogiendo solo su nombre y propiedades fiscales. Entonces, si ejecutas esta aplicación, esto es lo que obtenemos una matriz de dos cursos. Y cada curso tiene estas tres propiedades. A veces solo queremos obtener el número de documentos en lugar de los documentos reales. Entonces, si ese es el caso, no necesitamos usar el método select. En cambio, llamamos conteo, y esto devuelve el recuento de documentos que coinciden con este criterio. Así que de vuelta en la terminal, volvamos a ejecutar esta aplicación. Mira, tenemos dos documentos que coinciden con nuestro filtro. 13. Patrones de actualización en Mongoose: enfoque de consulta primero: Entonces antes aprendiste sobre este método de límite. Un método que va de la mano con el método limit es un método de salto. Y usamos esto para implementar la paginación. Déjame mostrarte cómo funciona esto. Así que permítanme definir una constante llamada número de página. Esto puede ser uno, dos, tres, lo que sea. Entonces pongamos esto a dos. Tenemos otra constante llamada tamaño de página. Sí. Así que he codificado estos números. Eso es puramente por simplicidad. Pero en una aplicación del mundo real, pasamos estos valores como parámetros de cadena de consulta a APIs restful. Entonces podrías tener una API para obtener la lista de cursos. Su punto final puede obtener parámetros de cadena de consulta como este. Entonces número de página, establecemos esto dos y tamaño de página, establecemos esto en diez. Así es como funciona en el mundo real. Por ahora, no tenemos que preocuparnos por esto. Entonces, eliminemos esto. Para implementar la paginación, necesitamos saltarse todos los documentos de la página anterior Entonces aquí está la fórmula. Número de página menos una vez el tamaño de la página. Entonces aquí, estoy asumiendo que el número de página comienza desde uno. Entonces, con mayor precisión, este es el número de página, no el índice de página. ¿Bien? Y luego cambiamos el límite al tamaño de la página. Con esto, podemos obtener los documentos en una página determinada. 14. Actualiza patrones de Mongoose: actualiza el primer enfoque: Entonces aprendiste mucho sobre documentos queering. En esta conferencia, te voy a mostrar cómo actualizar documentos en base de datos Mongo DB Así que vamos a crear una nueva función. Entonces último curso de actualización. Configuramos esto en una función de error y debería tomar un ID. Entonces como ID, fed R va a un bloque coord. Esta es la identificación del curso. Vamos a actualizarlo, y luego aquí, vamos a reemplazar esto con curso de actualización. Ahora hay básicamente dos formas de actualizar un documento en MongAIV. Un enfoque es lo que yo llamo donde tú primero. Entonces encuentras un documento usando Fine by ID, luego modificamos sus propiedades. Y luego finalmente, llama al método save. Este es probablemente el enfoque que has usado en otros frameworks. Ahora el otro enfoque es lo que yo llamo actualización primero. Entonces, en lugar de recuperar primero un documento, vamos en la base de datos y actualizamos directamente Ahora a menudo también podemos obtener el documento actualizado. Entonces en esta conferencia, voy a mostrarles el primer acercamiento, y veremos el otro enfoque en el siguiente video. Entonces, eliminemos todos estos comentarios. Aquí queremos obtener el curso con una identificación dada. Así que por supuesto punto Fine Por ID, pasamos este ID aquí. Ahora bien, esto devuelve una promesa, así que lo alejamos, obtenemos el resultado y lo almacenamos aquí. Ahora, lo más probable es que no haya curso con una identificación dada, así que tenemos que verificar eso. Si no tenemos curso, vamos a regresar de inmediato. De lo contrario, vamos a actualizar las propiedades de este curso. Así podemos establecer curso punto se publica a true y también autor a otro autor. Hay otro enfoque. En lugar de establecer múltiples propiedades, llamamos al método set. Así que por supuesto conjunto de puntos. Aquí pasamos un objeto con pares de valores clave a actualizar. Así podemos establecer que se publique a true y autor a otro autor. Entonces, básicamente, estos dos enfoques son idénticos. Cuál eliges es puramente tu preferencia personal. Ahora en esta demo, voy a usar el primer enfoque, y finalmente, llamamos al método save. Este es el mismo método que usamos anteriormente, crear un nuevo curso. Por lo que devuelve una promesa. Podemos awate, obtener el resultado, y mostrarlo en la consola Así consola dot log resultado. Ahora voy a volver englobar y obtener una identificación válida del curso. Todo bien. Entonces aquí en nuestra colección de cursos, voy a agarrar este ID de curso y pegarlo aquí. Ahora, de vuelta en la terminal, ejecutemos este programa. Aquí está el curso que actualizamos. Mira, el autor está configurado para otro autor. En la siguiente conferencia, te voy a mostrar cómo actualizar un documento directamente en la base de datos sin recuperarlo primero 15. Contar documentos con Mongoose: Yo en la última conferencia, aprendiste sobre el primer acercamiento de consulta para actualizar un documento. Este enfoque es útil si recibe una entrada del cliente y desea asegurarse de que la actualización sea una operación válida. Por ejemplo, aquí tenemos una regla de negocio. Entonces, si se publica el curso, tal vez no se nos debería permitir cambiar de autor. Para implementar esta regla de negocio, primero necesitamos recuperar el curso, y luego tenemos que escribir alguna lógica como esta. Entonces, si se publica curso, queremos regresar. No queremos actualizar este curso. Entonces ahí es cuando usamos el primer enfoque de consulta. Pero a veces, ya sabes lo que estás haciendo, no estás recibiendo aportes del cliente. Solo desea actualizar documento o tal vez múltiples documentos directamente en la base de datos. Y eso es lo que te voy a mostrar en esta conferencia. Entonces, en lugar de usar el método fine by ID, usamos el método update many o update one method. Ahora bien, el primer argumento aquí es una consulta o un objeto de filtro. Para que podamos obtener el curso con este ID, o podemos pasar algo más genérico. Podemos obtener todos los cursos que no se publiquen. Entonces con esto, podemos actualizar múltiples documentos de una sola vez. Ahora en esta demo, queremos actualizar un curso con un ID particular. Voy a cambiar esto para subrayar ID y establecer esto en argumento ID Ahora el segundo argumento para el método update one es el objeto update. Ahora aquí necesitamos usar uno o más de los operadores de actualización de Mongo DB Por lo tanto, si busca los operadores de actualización de Mongo DB, En esta página, puede encontrar la lista de todos los operadores compatibles Entonces tenemos fecha actual para establecer el valor de un campo a la fecha actual. Tenemos tinta o incremento. Esto es muy poderoso. Con esto, podemos incrementar el valor de un campo por la cantidad especificada Imagina que quieres construir una aplicación como Facebook. Entonces, cuando al usuario le gusta una publicación, quieres incrementar el número de me gusta Este operador, puede incrementar el número de s directamente en la base de datos No tienes que volver a intentar primero el post, luego incrementar el número de s. También puedes pasar un valor negativo para decrementar el valor de Tenemos hombres que es útil si desea actualizar un campo si el valor especificado es menor que el valor de campo existente. Tenemos otro operador similar, y con esto, podemos actualizar un campo si el valor especificado es mayor que el valor de campo existente. Tenemos L o multiplicar, que es algo similar al incremento. Pero con esto, podemos multiplicar el valor de un campo por la cantidad especificada. Nosotros hemos establecido, que voy a mostrarles en esta conferencia, y con esto, podemos establecer el valor del campo. Y similar a esto, hemos establecido, que podemos usar para eliminar el campo especificado de un documento. Así que de vuelta aquí en nuestro objeto de actualización, voy a usar el operador set. Ponemos esto a un objeto, y en este objeto, agregamos uno o más pares de valores clave. Entonces digamos que queremos actualizar la propiedad auor, establecerla en Shevin, y queremos establecer se publica a caídas Entonces con esta actualización un método, podemos actualizar un documento directamente en la base de datos sin recuperarlo primero Ahora bien, lo que obtenemos aquí es el resultado de la operación de actualización, no un objeto de curso. Así que cambiemos el nombre de esto para dar como resultado. Ahora no tenemos que comprobar la existencia de un curso. No tenemos que actualizar las propiedades aquí, y no tenemos que guardarlas explícitamente. Bien, muy sencillo. Así que volvamos a la terminal y volvamos a ejecutar nuestra aplicación. Entonces puedes ver aquí en el objeto de resultados, hemos modificado un documento. Y aquí está este documento en nuestra base de datos Mongo DV. Por lo que el autor se establece en Shiv en y se publica se establece en falso. Hermoso. Ahora, a veces se quiere obtener el documento que se actualizó. Si ese es el caso, en lugar del método update one, debe usar fine by ID y update. Así que aquí, como primer argumento, necesitamos pasar un ID en lugar de un objeto de consulta. Y de manera similar, como segundo argumento, pasamos nuestro objeto update. Ahora, lo que obtenemos aquí es un objeto de curso. Entonces voy a cambiar el autor a Shevin y se publica a True Ejecutemos este programa y veamos qué pasa. Entonces nodo, índice o Js. Bien, aquí está el documento del curso que actualizamos. No obstante, mira, el autor sigue shivn y se publica es falso Entonces lo que obtenemos aquí es el documento original que es el documento antes de la operación de actualización. Si quieres obtener el documento actualizado, necesitas pasar una opción. Tenemos que pasar otro argumento a este método. Aquí paso un objeto y pongo la nueva propiedad a true. Y con esto, obtendremos el documento actualizado, guardar. Ahora, de vuelta a la terminal, volvamos a ejecutar la aplicación. Bien, mira, Autor que emite y se publica es cierto. Entonces con este método, enviaremos un comando Mongo Dev para actualizar el documento y devolverlo. A continuación, te voy a mostrar cómo eliminar un documento. 16. Elimina documentos en Mongoose: En esta conferencia, voy a mostrarles cómo eliminar un documento. Entonces, para ahorrar tiempo, voy a obtener el puerto para la función de actualización del curso, duplicarlo y luego cambiarle el nombre para eliminar el curso. Y por último, reemplace esto con quitar el monedero. Todo bien. Ahora vamos a implementar esta función. Entonces, para eliminar un documento, llamamos curso. Aquí tenemos este método, borre uno. Este método toma un filtro o un objeto de consulta, por lo que podemos pasar un objeto como este. Y con este objeto de consulta, podemos encontrar un documento con un ID dado. Ahora bien, si enviamos algo más genérico como es publicado, establecido en false, podríamos tener múltiples cursos que no están publicados. Este método, eliminar uno encontrará el primero y lo eliminará. Ahora en esta demo, no queremos usar esto. Voy a revertir esto de nuevo a este objeto de consulta. Ahora similar al método de actualización uno. Este método devuelve una promesa, por lo que podemos alejarla, obtener el resultado y almacenarla aquí, y luego conectarla en la consola. Ahora vamos a ejecutar este programa, así que no index dot js. Bien, aquí está nuestro objeto de resultados y puede ver que hemos eliminado un documento. Ahora bien, si quieres eliminar varios documentos, en lugar de eliminar uno, usa delete Manu Este método también devuelve un objeto result que muestra el número de documentos que fueron eliminados. Ahora bien, si quieres obtener el documento que fue eliminado, tenemos otro método aquí. Así que pose punto fino por ID y retire. Por lo que pasa aquí la identificación. Esto vuelve a prometer. Lo esperamos, obtenemos el resultado y lo almacenamos en este objeto de curso. Entonces ahora voy a encomiar esta primera línea. Y ya borramos este curso. Entonces ejecutemos este programa y veamos qué pasa. Nodo indexado o hs. Entonces obtenemos NO. Entonces, si no tenemos un curso por el ID dado, este método devolverá NOP