En este tutorial te mostraré cómo interactuar con una base de datos MongoDB desde Node.js
Si no está familiarizado con MongoDB, consulte nuestra guía sobre sus conceptos básicos y cómo instalarlo y usarlo
Usaremos el paquete mongodb
npm oficial . Si ya tienes un proyecto Node.js en el que estás trabajando, instálalo usando
npm install mongodb
Si comienza desde cero, cree una nueva carpeta con su terminal y ejecútelo npm init -y
para iniciar un nuevo proyecto Node.js y luego ejecute el npm install mongodb
comando.
Conectarse a MongoDB
Necesitas el mongodb
paquete y obtienes el objeto MongoClient de él.
const mongo = require('mongodb').MongoClient
Crea una URL para el servidor MongoDB. Si utilizas MongoDB localmente, la URL será algo como mongodb://localhost:27017
, ya que 27017
es el puerto predeterminado.
const url = 'mongodb://localhost:27017'
Luego use el mongo.connect()
método para obtener la referencia al cliente de la instancia MongoDB:
mongo.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) = { if (err) { console.error(err) return } //...})
Ahora puedes seleccionar una base de datos utilizando el client.db()
método:
const db = client.db('kennel')
Crea y obtén una colección
Puedes obtener una colección mediante el db.collection()
método. Si la colección aún no existe, se crea.
const collection = db.collection('dogs')
Insertar datos en una colección de documentos
Agregue a app.js la siguiente función que utiliza el insertOne()
método para agregar una dogs
colección de objetos.
collection.insertOne({name: 'Roger'}, (err, result) = {})
Puede agregar varios elementos usando insertMany()
, pasando una matriz como primer parámetro: Utensilios de cocina
collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) = {})
Encuentra todos los documentos
Utilice el find()
método de la colección para obtener todos los documentos agregados a la colección:
collection.find().toArray((err, items) = { console.log(items)})
Buscar un documento específico
Pase un objeto al find()
método para filtrar la colección según lo que necesita recuperar:
collection.find({name: 'Togo'}).toArray((err, items) = { console.log(items)})
Si sabe que obtendrá un elemento, puede omitir la toArray()
conversión del cursor llamando a findOne()
:
collection.findOne({name: 'Togo'}, (err, item) = { console.log(item)})
Actualizar un documento existente
Utilice el updateOne()
método para actualizar un documento:
collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) = { console.log(item)})
Eliminar un documento
Utilice el deleteOne()
método para eliminar un documento:
collection.deleteOne({name: 'Togo'}, (err, item) = { console.log(item)})
Cerrando la conexión
Una vez que haya terminado con las operaciones, puede llamar al close()
método en el objeto cliente:
client.close()
Utilice promesas o async/await
Publiqué todos esos ejemplos utilizando la sintaxis de devolución de llamada . Esta API también admite promesas (y async/await ).
Por ejemplo esto
collection.findOne({name: 'Togo'}, (err, item) = { console.log(item)})
Se puede utilizar con promesas:
collection.findOne({name: 'Togo'}) .then(item = { console.log(item) }) .catch(err = { console.error(err) })
o async/await:
const find = async () = { try { const item = await collection.findOne({name: 'Togo'}) } catch(err = { console.error(err) })}find()
Tips de Node.js
Tal vez te puede interesar:
- Cómo leer un archivo CSV con Node.js
- Cómo obtener los nombres de todos los archivos en una carpeta en Node
- Cómo renombrar archivos de forma masiva en Node.js
- Cómo comprobar la versión actual de Node.js en tiempo de ejecución
Cómo utilizar MongoDB con Node.js
Conectarse a MongoDBCrea y obtén una colecciónInsertar datos en una colección de documentosEncuentra todos los documentosBuscar un documento específicoActu
programar
es
https://aprendeprogramando.es/static/images/programar-como-utilizar-mongodb-con-node-1821-0.jpg
2024-10-28
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente