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
Guía de MongoDB
- Resumen de MongoDB: Empezando con MongoDB
- Cómo instalar MongoDB en Ubuntu y Mac
- Creación de una base de datos en MongoDB
- Comandos básicos de MongoDB Shell
- MongoDB Compass: Uso de la interfaz gráfica de Mongo
- Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
- Explicación de los operadores de proyección y proyección de MongoDB
- Explicación de las funciones agregadas de MongoDB
- Ordenación de MongoDB: método y ejemplos de sort()
- Uso de operadores de Push & Pull en MongoDB
- Cómo utiliza MongoDB $unwind
- 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
- Ejemplos de consultas de geolocalización de MongoDB
- Introducción a las transacciones de MongoDB
- Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
- Mejores comandos de MongoDB te necesitas saber
- Replicación de MongoDB: Una introducción completa
- Cómo configurar un clúster de MongoDB
- Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
- MongoDB Atlas: Configuración y uso de MongoDB gestionado
- Cómo ejecutar MongoDB como contenedor Docker
- Uso, gestión y requisitos de memoria de MongoDB
- Cómo utilizar Mongodump para copias de seguridad de MongoDB
- Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
- Cómo utilizar PyMongo
- Cómo utilizar Mongoose para MongoDB y NodeJS
- Chuletas de MongoDB
- MongoDB vs Cassandra: Comparación de bases de datos NoSQL
- PostgreSQL vs MongoDB: Comparando bases de datos
- MySQL vs MongoDB: Comparando bases de datos
- Certificaciones MongoDB: Una introducción
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.