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