Cómo utilizar Mongoose para MongoDB y NodeJS

Cómo utilizar Mongoose para MongoDB y NodeJS

  • Orquestación
5 min de lectura Actualizado Oct 27, 2017

Puntos clave: Mongoose están una biblioteca NodeJS que simplifica la interacción con MongoDB, permitiendo el guardado de datos y la validación del esquema. La guía detalla los requisitos previos, incluida la instalación de NodeJS, y proporciona pasos para crear una base de datos y un esquema, junto con código de ejemplo para cargar datos, especialmente enfocado en un conjunto de datos para fumadores.

  • conoce a utilizar Mongoose con MongoDB y NodeJS.
  • Incluye ejemplos de código para guardar y validar datos.

Aquí mostramos cómo utilizar Mongoose para guardar datos en un MongoDB.

¿Qué es Mangosta?

En este ejemplo, utilizaríamos NodeJS. No te preocupes si no tú conoces NodeJS. Te explicaremos cada línea de código. Están JavaScript del lado del servidor. Al principio están un poco difícil de entender, en parte porque están asíncrono, es decir, multihilo. Así que tú tienes que utilizar cualquiera de las siguientes:

  • Solo funciones síncronas
  • Llamadas de regreso

Si no, cuando tú hagas la afirmación n, la n+1 también se ejecutará enseguida. Así que tú puedes, por ejemplo, estar procesando un archivo de texto antes de que te hayas leído completamente.

Mongoose están una API encima de una API. Facilita el uso de la API NodeJS de MongoDB.

Requisitos previos

Primero, te necesito NodeJS versión 6 o superior. Luego instala mongoose así:

    npm install mongoose

Datos de muestra

Vamos a utilizar datos sobre fumadores del CDC (Centro para el Control y la Prevención de Enfermedades). Descárgalo así:

    wget https://chronicdata.cdc.gov/views/wsas-xwh5

Este conjunto de datos es una encuesta a fumadores. Solo son interesados en la parte de los datos que muestra qué estados tienen más fumadores (es decir, ciertas secciones JSON de Contenidos en caché). Esa sección es la siguiente:

    {
"id" : 320867377,
"name" : "LocationDesc",
"dataTypeName" : "text",
"description" : "Location description",
"fieldName" : "locationdesc",
"position" : 3,
"renderTypeName" : "text",
"tableColumnId" : 20084901,
"width" : 109,
"cachedContents" : {
"largest" : "Wyoming",
"non_null" : 14069,
"null" : 0,
"top" : [ {
"item" : "North Carolina",
"count" : 20
}, {
"item" : "North Dakota",
"count" : 19
}, {
"item" : "Ohio",
"count" : 18

Ahora, abre la CLI de mongoDB y Crea la base de datos de tabaco y la colección de fumadores:

    mongo
use tobacco
db.createCollection("smokers")

A continuación explicamos el código. Al final están todo el programa para que te pueda copiarlo y pegarlo.

Primero conectamos con MongoDB:

    var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/tobacco', { useMongoClient: true });
mongoose.Promise = global.Promise;

A continuación, Crea un esquema. No están necesario un esquema. Una cosa de MongoDB están te puede poner cualquier tipo de JSON y lo almacena. Pero un esquema permite te Define tus propias reglas de validación. El esquema también puede incluir todo tipo de elementos interesantes como funciones.

Como te puede Ve, Contenido en caché están la parte del documento JSON que son interesa. Y están parte superior de un array.

    var schema = new mongoose.Schema({
cachedContents : {
largest : String,
non_null : Number,
null : Number,
top : [{
item : String,
count : Number
}],
smallest : String,
format : {
displayStyle : String,
align : String
}
}
});

Luego compilamos el esquema en un modelo así:

    var Smokers = mongoose.model('smokers', schema);

Lee los datos de la cadena JSON (fs.readFileSync) en un objeto JavaScript JSON (usando JSON.parse). Fíjate que utilizamos fs.readFileSync (es decir, síncrono) en lugar de fs.readFile para que las siguientes secciones del código esperen hasta que la lectura están completada.

    fs = require('fs');
    var d = fs.readFileSync('/home/walker/Documents/mongodb/tobacco.json', 'utf8', (err, data) => {
if (err) throw err;
return (d); });
    var e = JSON.parse(d);

A continuación está la parte más compleja. El archivo JSON de tabaco están dos niveles de JSON. Así que tenemos un bucle dentro de un look. Luego nos referimos a la parte cachedContents del objeto JSON usando e.columns[i,j].cachedContents. Solo queremos esos registros con e.columns[i,j].cachedContents.top, es decir, top están definido. (Los otros son datos de geolocalización.)

Suministramos los e.columns[i,j].cachedContents al constructor para el esquema Smokers. Luego utilizamos el método de guardar. El save se ejecuta de forma asíncrona. Pero eso no nos importa, ya que aparece al final del programa.

    for (i in e) {
for (j in i) {
    if (e.columns[i,j].dataTypeName != 'location') {
if (typeof(e.columns[i,j].cachedContents.top) != 'undefined') {
var smokers = new Smokers(e.columns[i,j].cachedContents);
console.log(e.columns[i,j].cachedContents);
smokers.save(function (err) {
if (err)return console.log(err);
})
}
}
}
}

El Código Completo

Cópila y guarda esto como loaddata.js. Luego ejecútalo usando: node loaddata.js. Fíjate que no están main ni nada parecido. Simplemente funciona de arriba abajo.

    fs = require('fs');
    var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/tobacco', { useMongoClient: true });
mongoose.Promise = global.Promise;
    var schema = new mongoose.Schema({
cachedContents : {
largest : String,
non_null : Number,
null : Number,
top : [{
item : String,
count : Number
}],
smallest : String,
format : {
displayStyle : String,
align : String
}
}
});
    var d = fs.readFileSync('/home/walker/Documents/mongodb/tobacco.json', 'utf8', (err, data) => {
if (err) throw err;
return (d); });
    var e = JSON.parse(d);
    var Smokers = mongoose.model('smokers', schema);
    for (i in e) {
for (j in i) {
    if (e.columns[i,j].dataTypeName != 'location') {
if (typeof(e.columns[i,j].cachedContents.top) != 'undefined') {
var smokers = new Smokers(e.columns[i,j].cachedContents);
console.log(e.columns[i,j].cachedContents);
smokers.save(function (err) {
if (err)return console.log(err);
})
}
}
}
}

Como registro guardado se verá algo así:

    { largest: 'Wyoming',
non_null: 14069,
null: 0,
top:
[ { item: 'North Carolina', count: 20 },
{ item: 'North Dakota', count: 19 },
{ item: 'Ohio', count: 18 },
{ item: 'Oklahoma', count: 17 },
{ item: 'Oregon', count: 16 },
{ item: 'Pennsylvania', count: 15 },
{ item: 'Puerto Rico', count: 14 },
{ item: 'Rhode Island', count: 13 },
{ item: 'South Carolina', count: 12 },
{ item: 'South Dakota', count: 11 },
{ item: 'Tennessee', count: 10 },
{ item: 'Texas', count: 9 },
{ item: 'Utah', count: 8 },
{ item: 'Vermont', count: 7 },
{ item: 'Virginia', count: 6 },
{ item: 'Washington', count: 5 },
{ item: 'West Virginia', count: 4 },
{ item: 'Wisconsin', count: 3 },
{ item: 'Wyoming', count: 2 },
{ item: 'Indiana', count: 1 } ],
smallest: 'Alabama' }

Consejos

Como te trabajar con esto, te puede eliminar y luego mostrar objetos como se muestra a continuación. Eliminar requiere un filtro. {} están un filtro que significa todos los registros. te utiliza base de datos en lugar de tabaco para indicar la base de datos. Y los fumadores están la colección. Y si tú escribes algo mal, no te da error porque asume que tú quieres Crea un objeto nuevo. (JavaScript también está así porque no tiene comprobación de errores respecto a nombres de variables ortográficas.)

    sse tobacco
db.smokers.remove({})
db.smokers.find({}).pretty()

Y luego te puedes recorrer los datos así con el intérprete interactivo de nodos (es decir, ejecutar nodo y luego pegar el código que te quieras estudiar:

    for (i in e) { for (j in i) {"i=",i,"j=",j,console.log(e.columns[i,j].cachedContents) }}

Recursos adicionales

play

Guía de MongoDB

  1. Resumen de MongoDB: Empezando con MongoDB
  2. Cómo instalar MongoDB en Ubuntu y Mac
  3. Creación de una base de datos en MongoDB
  4. Comandos básicos de MongoDB Shell
  5. MongoDB Compass: Uso de la interfaz gráfica de Mongo
  6. Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
  7. Explicación de los operadores de proyección y proyección de MongoDB
  8. Explicación de las funciones agregadas de MongoDB
  9. Ordenación de MongoDB: método y ejemplos de sort()
  10. Uso de operadores de Push & Pull en MongoDB
  11. Cómo utiliza MongoDB $unwind
  12. 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
  13. Ejemplos de consultas de geolocalización de MongoDB
  14. Introducción a las transacciones de MongoDB
  15. Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
  16. Mejores comandos de MongoDB te necesitas saber
  17. Replicación de MongoDB: Una introducción completa
  18. Cómo configurar un clúster de MongoDB
  19. Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
  20. MongoDB Atlas: Configuración y uso de MongoDB gestionado
  21. Cómo ejecutar MongoDB como contenedor Docker
  22. Uso, gestión y requisitos de memoria de MongoDB
  23. Cómo utilizar Mongodump para copias de seguridad de MongoDB
  24. Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
  25. Cómo utilizar PyMongo
  26. Cómo utilizar Mongoose para MongoDB y NodeJS
  27. Chuletas de MongoDB
  28. MongoDB vs Cassandra: Comparación de bases de datos NoSQL
  29. PostgreSQL vs MongoDB: Comparando bases de datos
  30. MySQL vs MongoDB: Comparando bases de datos
  31. Certificaciones MongoDB: Una introducción

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.