Header Ads Widget

Ticker

6/recent/ticker-posts

Nodo MongoDB nativo

 Nodo MongoDB nativo

En este tutorial veremos cómo crear una aplicación simple para rastrear acciones en una lista de observación o cartera. Para almacenar estos datos, usaremos MongoDB, una popular solución de almacenamiento NoSQL que se usa a menudo con Node.js. Veremos cómo crear la estructura de directorios para albergar esta aplicación de lista de seguimiento de stock y luego instalar MongoDB Native usando npm para guardarlo como una dependencia del archivo package.json. Una vez que todo esté en su lugar, veremos cómo conectarnos a Mongo e insertar una nueva acción en nuestra lista de seguimiento. Discutiremos un poco sobre ObjectId y cómo funciona en Mongo, y luego terminaremos con la obtención de documentos, el recuento de documentos, la actualización de documentos y también su eliminación.


Crear directorio y Package.json

En primer lugar, crearemos un directorio simple para contener todo nuestro código y crearemos un archivo package.json usando npm init.

nodo $ mkdir stock-app
nodo $ cd stock-aplicación
stock-app $ npm init
Esta utilidad lo guiará a través de la creación de un archivo package.json.
Solo cubre los elementos más comunes e intenta adivinar valores predeterminados razonables.

Consulte la npm help jsondocumentación definitiva sobre estos campos.
y exactamente lo que hacen.

Úselo luego para instalar un paquete ynpm install 
guárdelo como una dependencia en el archivo package.json.

Presione ^ C en cualquier momento para salir.
nombre del paquete: (stock-app)
versión: (1.0.0)
descripción: Lista de seguimiento simple de acciones
punto de entrada: (index.js)
comando de prueba:
repositorio git:
palabras clave:
autor:
licencia: (ISC)
A punto de escribir en C: \ node \ stock-app \ package.json:

{
  "nombre": "stock-app",
  "versión": "1.0.0",
  "description": "Lista de seguimiento de acciones simple",
  "main": "index.js",
  "guiones": {
    "prueba": "echo \" Error: no se especificó ninguna prueba \ "&& salida 1"
  },
  "autor": "",
  "licencia": "ISC"
}


¿Esta bien? (si)
stock-app $

Instalación de MongoDB Native

Ahora tenemos un archivo package.json y podemos instalar el paquete nativo de MongoDB así.

stock-app $ npm install mongodb --save
npm notice creó un archivo de bloqueo como package-lock.json. Debe enviar este archivo.npm WARN stock-app@1.0.0 Sin campo de repositorio.

+ mongodb@3.1.1
agregó 7 paquetes de 5 contribuyentes y auditó 7 paquetes en 3.009s
encontrado 0 vulnerabilidades

Cuando se complete, tendrá un nuevo archivo package.json en el directorio que se verá así.


Conexión a MongoDB usando MongoClient

Vamos a poner los archivos específicos de nuestra base de datos en un directorio dedicado llamado databaseLo sé, tan original.
nuevo directorio de base de datos

En este nuevo directorio, podemos crear un archivo JavaScript llamado mongodb-connect.js .
archivo js mongodb-connect

En este archivo, agreguemos el siguiente código JavaScript.

Antes de ejecutar este fragmento, asegúrese de tener MongoDB instalado y ejecutándose en su máquina. Siempre que se verifique, podemos acceder a esa carpeta de la base de datos y ejecutar el archivo.

base de datos stock-app $ cd
database $ node mongodb-connect.js (nodo: 14560) DeprecationWarning: el analizador de cadenas de URL actual está en desuso y wi
se eliminará en una versión futura. Para usar el nuevo analizador, pase la opción {useNewUr
lParser: true} a MongoClient.connect.
Conectado a MongoDB

Interesante. Parece que nos conectamos, sin embargo, también vemos esa advertencia de desactivación. Una búsqueda rápida en Stack Overflow indica que podemos actualizar el código así, lo que aclara el error.


Insertar registro en la colección usando MongoDB Native

Intentemos ahora insertar un documento en la colección. Estamos representando la adición de una cotización bursátil a una lista de seguimiento aquí. La función insertOne () se utiliza para completar esta tarea.

Una vez más podemos ejecutar este archivo y ver el resultado. Dado que estamos obteniendo una instancia del nuevo Stock, y no un error, parece que todo salió bien.

base de datos $ nodo mongodb-connect.js
Conectado a MongoDB [{
    "ticker": "AAPL", "inPortfolio": falso,
    "_id": "5b55f32bbcbb001890cdb254"
  }
]

También podemos utilizar Mongo Compass para comprobar los resultados.
Mongo insertone resultado en brújula
Ver el nuevo documento con Compass también se ve bien.


El ObjectId

Cuando insertamos un nuevo documento en Mongo, observe el campo _id que obtuvimos como parte de nuestro resultado. No especificamos ese valor, Mongo lo creó para nosotros.

"_id": "5b55f32bbcbb001890cdb254"

Como ocurre con la mayoría de los sistemas de bases de datos, existe un identificador único para cualquier dato de la base de datos. En Mongo, ese es el ObjectId. El ObjectId * no * es un entero que se incrementa automáticamente como suele ver en los sistemas basados ​​en SQL. Mongo usa una identificación generada aleatoriamente. Una razón para esto es que como un sistema grande escala, no hay necesidad de verificar primero cuál es el ID de incremento automático más grande antes de insertar un nuevo documento. Mongo solo genera una nueva identificación aleatoria y ya está. El ObjectId en sí es un valor de 12 bytes, siendo los primeros 4 bytes una marca de tiempo. Es por eso que no hay un campo created_at como se ve en los sistemas basados ​​en SQL. Los siguientes 3 bytes son un identificador de máquina. Luego, hay 2 bytes para representar la identificación del proceso. Los últimos 3 bytes son un contador. Todos estos trabajan juntos para crear ese valor aleatorio. Aprender más acerca de ObjectId en los documentos si tiene curiosidad.


Obtención de datos con MongoDB Native

Ahora podemos comenzar a buscar algunos datos de Mongo. Podemos agregar un nuevo archivo en nuestro directorio de base de datos para esto. Lo llamaremos database-fetch.js .
archivo de búsqueda de base de datos js

Insertamos algunas acciones más en nuestra base de datos detrás de escena para que podamos demostrar la función find (). ToArray () aquí.

Cuando ejecutamos el archivo database-fetch.js , vemos la siguiente matriz de resultados. Es una matriz de tres objetos, cada uno de los cuales tiene propiedades _id, ticker e inPortfolio únicas.

base de datos $ nodo database-fetch.js
Conectado a MongoDB
Cepo
[
  {
    "_id": "5b55f32bbcbb001890cdb254",
    "ticker": "AAPL",
    "inPortfolio": falso
  },
  {
    "_id": "5b55f90ed81f3928c0423f41",
    "ticker": "MSFT",
    "inPortfolio": verdadero
  },
  {
    "_id": "5b55f925330ad628406bcab3",
    "ticker": "NFLX",
    "inPortfolio": falso
  },
  {
    "_id": "5b55f9575e8bc54238453153",
    "ticker": "MDB",
    "inPortfolio": verdadero
  }
]

La consulta anterior puede representar todas las acciones de una lista de seguimiento. Sin embargo, tal vez queramos ver solo aquellos que están en su cartera. Es posible que esté viendo cuatro acciones, pero en realidad solo ha comprado dos para su cartera. Podemos modificar la consulta para que sea más granular.

Ahora, cuando ejecutamos el archivo, podemos ver que la consulta solo devuelve acciones donde la propiedad inPortfolio está establecida en true. Por lo tanto, parece que actualmente tenemos a Microsoft y Mongodb Inc en nuestra cartera.

base de datos $ nodo database-fetch.js
Conectado a MongoDB
Cepo
[
  {
    "_id": "5b55f90ed81f3928c0423f41",
    "ticker": "MSFT",
    "inPortfolio": verdadero
  },
  {
    "_id": "5b55f9575e8bc54238453153",
    "ticker": "MDB",
    "inPortfolio": verdadero
  }
]

Contando documentos en la colección

Si desea consultar la cantidad de documentos en una colección, puede hacerlo como vemos a continuación. En nuestro caso, esto nos muestra todas las acciones de nuestra lista de seguimiento, ya sea que las hayamos comprado o no.

Aquí está el resultado de esa consulta. Justo lo que esperaríamos.

base de datos $ nodo database-fetch.js
Conectado a MongoDB
Recuento de existencias: 4

Eliminación de documentos con MongoDB Native

Pasando a la funcionalidad de eliminación, podemos crear un nuevo archivo llamado mongodb-delete.js en nuestro directorio de base de datos.
mongodeb eliminar js

Imaginemos que simplemente queremos eliminar cualquier acción de nuestra lista de seguimiento que no esté en nuestra cartera. Podemos usar la función deleteMany () para hacer precisamente eso.

Podemos ejecutar el archivo JavaScript y obtenemos el resultado a continuación. En realidad, omitimos una gran parte de la salida, ya que todo lo que realmente nos importa es que n = 2 y ok = 1. Esto significa que dos documentos fueron afectados (eliminados) y el resultado fue correcto (funcionó).

base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
CommandResult {
  resultado: {n: 2, ok: 1}

Lo que eso significa para nosotros es que Apple y Netflix ya no están en nuestra lista de seguimiento. Ahora solo tenemos Microsoft y Mongo Inc.

Quizás queremos vender nuestras acciones de Microsoft para eliminarlas tanto de nuestra lista de seguimiento como de nuestra cartera. Podemos hacer eso con deleteOne () .

La ejecución del archivo muestra que se eliminó 1 documento y todo salió bien.

base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
CommandResult {
  resultado: {n: 1, ok: 1}

Veamos lo que tenemos en la base de datos ahora usando Compass. Parece que las acciones de MDB son las últimas acciones que poseemos.
ver documentos en la brújula

Resulta que necesitamos acceso a algunos fondos, por lo que tendremos que vender MDB para recuperar nuestro capital. Esta vez usaremos findOneAndDelete () así.

Cuando ejecutamos el programa, vemos que se eliminó MDB y ahora no tenemos acciones en nuestra lista de seguimiento o cartera.

base de datos $ nodo mongodb-delete.js
Conectado a MongoDB
{lastErrorObject: {n: 1},
  valor:
   {_id: 5b55f9575e8bc54238453153,
     ticker: 'MDB',
     inPortfolio: true},
  ok: 1}

Actualización de documentos con MongoDB Native

Por último, podemos ver cómo actualizar documentos en MongoDB. Sin embargo, es posible que vea un problema. No tenemos más acciones en nuestra lista de seguimiento o cartera. Agreguemos un montón en un barrido usando insertMany ().

Genial, todas esas acciones están de vuelta en la lista de seguimiento y la cartera. Ahora queremos actualizar la cartera. Agreguemos un nuevo archivo al proyecto llamado mongodb-update.js .
mongodb-update js stock-app

La función que usaremos en esta sección es findOneAndUpdate () . En este escenario, queremos eliminar a Microsoft de nuestra cartera, pero mantenerlo en nuestra lista de seguimiento. Eso significa que necesitamos encontrar MSFT y establecer su propiedad inPortfolio en false.

Ejecutar el archivo mongodb-update.js nos da esta respuesta.

base de datos $ nodo mongodb-update.js
Conectado a MongoDB
{lastErrorObject: {n: 1, updatedExisting: true},
  valor:
   {_id: 5b561c1c480b624574e1c6a2,
     ticker: 'MSFT',
     inPortfolio: false},
  ok: 1}

Parece que funcionó. Revisemos también Compass.
Resultado de findOneAndUpdate


Resumen nativo del nodo MongoDB

Eso lo resume con nuestro tutorial sobre el uso de MongoDB Native con Node.js. Muchas veces usaremos un ORM dedicado como Mongoose para este tipo de trabajo, pero como hemos visto en este tutorial, también se puede hacer con MongoDB Native con la misma eficiencia.

Publicar un comentario

0 Comentarios