Programación Funcional y Scripting

Es una base de datos de documentos de alta disponibilidad, y alta performance.

  • Documentos: Cualquier registro es un documento. Tienen una estructura similar a objetos JSON.
  • Colecciones: Donde se almacenan los documentos. Análogo a una tabla de una base de datos relacional. Todo documento en una colección tiene que tener un atributo _id, que actúa de primary key.

Binarios para las siguientes distribuciones:

 

en


 npm install --save mongodb

 var MongoClient = require('mongodb').MongoClient;

 var url = 'mongodb://localhost:27017/test';
 MongoClient.connect(url, function(err, db) {
  //El Código va aquí
 }); 

1. Instalar el driver para nodejs.

2. Incluir MongoClient, y conectar a la base de datos.

en


 db.collection('personas').insertOne({
    nombre: 'Homero',
    apellido: 'Simpson',
    direccion: {
        calle: 'Av. Siempre Viva',
        numero: 742
    },
    telefono: [
        {cod: '07', num: '555-4555'},
        {cod: '07', num: '555-4553'}
    ]
 }, function(err, result) {
    //Resultado del insertOne
 });

3. Insertar un documento


 db.collection('objetos').insertMany([
    {
        obj: 'Heladera', 
        color: 'blanco',
        watts: 480
    },
    {
        obj: 'Mesa Exterior',
        material: 'Vidrio',
        estructura: 'hierro'
    } 
 ], function(err, result) {
    //Resultado de insertMany
 });

en


 db.collection('personas').find().each(function(err, doc) {
    //Itera por todos los resultados
 });

4. Buscar documentos.


 db.collection('objetos').find({obj: 'Heladera'}).toArray(function(err, docs) {
    //docs es un array con todos los documentos cuyo 'obj' es 'Heladera'
 });

 db.collection('personas').find({"direccion.numero": 742}).each(function(err, doc) {
    //Itera por todos los resultados que tengan un 'subdocumento' 'direccion' que tenga
    //la propiedad 'numero' = 742
 });

en


 db.collection('personas').find({"telefono.cod": '07'}).each(function(err, doc) {
    //Itera por todos los documentos cuyo array 'telefono' tenga un documento 
    //con la porpiedad 'cod' = '07'
 });

4. Buscar documentos.


 db.collection('personas')
    .find()
    .sort({"direccion.calle": 1, "direccion.numero": -1})
    .toArray(function(err, docs) {
    //Trae todas las personas ordenado por nombre de calle de forma ascendente
    //luego por número de forma descendente 
 });

en


 db.collection('personas')
    .updateOne(
        {apellido: 'Gorgory'},
        {nombre: 'Rafa'},
        function(err, result) {
            //Modifica el primer 'Gorgory' que
            //encuentra asignando el nombre 'Rafa'
     });

5. Actualizar documentos.

Métodos:

  • updateOne
  • updateMany
  • replaceOne

Todos los métodos llevan los siguientes parámetros:

1. Un filtro para seleccionar elementos.

2. Un documento para especificar las propiedades a actualizar.

3. Parámetros opcionales.

en


 db.collection('personas')
    .deleteOne(
        {apellido: 'Gorgory'},
        function(err, result) {
            //Elimina el primer 'Gorgory' que
            //encuentra
     });

6. Eliminar documentos.

Métodos:

  • deleteOne
  • deleteMany

Todos los métodos llevan como parámetro un filtro para seleccionar elementos.


 db.collection('personas')
    .deleteMany(
        {},
        function(err, result) {
            //Elimina todos los 
            //documentos de la coleccion
     });

en


 db.collection('personas').drop(function(err, result) {
    //Elimina la colección entera.
 });

7. Eliminar colecciones.

Ejercicio

Crear un script de node que inserte varios documentos en la colección "productos". Como mínimo, cada documento debe tener un nombre, precio y foto (url a la foto), pero deberían incluir otras propiedades.

Se debe imprimir en consola un listado con todos los elementos cuyo nombre empiece con "a".

Luego debe modificar el nombre de los productos cuyo precio es menor a 100, y eliminar los mayores a 1000.

Si el precio del producto es = 55, debe reemplazar el documento entero.

Ejercicio 2

Crear una api REST, utilizando express donde pueda consultar, dar de alta, dar de baja y modificar documentos de la colección "productos".

Made with Slides.com