También queremos agradecer a todos los lectores que han ayudado a crecer esta comunidad, volveremos en 2014 con mas articulo.
¡FELICES FIESTAS!
El equipo de @HispaBigData
{ nombre : "Daniel Romero", Curso : "Probando MongoDB por HispaBigdata", NotaAsignatura1 : 5.5, NotaAsignatura2 : 6.4, NotaAsignatura3 : 7.8 }Aquí tenéis una serie de documentos con los que podéis hacer pruebas.
npm install couchbaseEl ejercicio que vamos a realizar, consiste en sacar el listado de vendedores que tenemos en el Bucket hispabigdata, en el documento de ventas que dimos de alta en el ejercicio de como importar un fichero json.
sudo npm --versionUna vez sabemos que versión tenemos, vamos a comenzar el proceso de actualización. Lo primero de todo será limpiar la cache que genera npm.
sudo npm cache clean -fEl siguiente paso es instalar n, una herramienta de administración de Node, que nos va a ayudar bastante.
sudo npm install -g n
sudo pip install couchbase
wget https://dl.dropboxusercontent.com/u/24596087/ventas.json zip ventas.zip ventas.json
java -versionSi disponemos de varias versiones de Java podeis usar el siguiente comando para elegir cual deseamos usar:
sudo update-alternatives --config javacUna vez verificado que disponemos de la versión de Java necesaria vamos a explicar como realizar la instalación en sistemas basados en Debian y en Red Hat, actualmente la última versión estable es la 2.0.
#Distribución basada en Debian sudo apt-get install rubygems #Distribución basada en Red Hat sudo yum install rubygemsUna vez que ya tenemos instalado las rubygems, vamos a proceder con la instalación de genghisapp.
sudo gem install genghisappRealizando dicha instalación obtuvimos el siguiente error:
Error: Building native extensions. This could take a while... ERROR: Error installing genghisapp: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb extconf.rb:1:in `require': no such file to load -- mkmf (LoadError) from extconf.rb:1 Gem files will remain installed in /var/lib/gems/1.8/gems/json-1.8.0 for inspection. Results logged to /var/lib/gems/1.8/gems/json-1.8.0/ext/json/ext/generator/gem_make.out
mongod --dbpath /data/ --port 27017 --logpath /data/log/hispabigdata.log &Ahora abrimos una consola de mongo y vamos a crear una base de datos y una colección con 100.000 de documentos, recordad que el siguiente proceso puede tardar bastante, dependiendo del ordenador en el que lo ejecuteis.
use LiberandoDB; for (var i=0; i < 100000; i++){ db.ejemploEliminacion.insert ({ "_id":i, "nombre":"HispaBigdata"+i, "fecha": ISODate() }); }Se ejecutamos el siguiente comando podemos ver la ocupación de las bases de datos que tenemos en mongo.
show dbs;
var MongoClient = require('mongodb').MongoClient; //Conexion con MongoDB -> servidor:puerto/nombreBasedeDatos MongoClient.connect('mongodb://localhost:27017/supermercado', function(err,db){ if(err) throw err; //Vamos a buscar a la vendedora Julia Romero var query = {"vendedor" : "Julia Romero"} //Vamos a añadir un nuevo artículo vendido, //Para ello usamos la funcion push para insertar un un item al array artículos. var nuevo_elemento = {$push : {"articulos" : {articulo: "cuaderno hispabigdata", "pvp" : 25 }}}; //Creamos la variable coleccion var coleccion = db.collection('ventas'); //Actualizamos el documento coleccion.update(query, nuevo_elemento, function(err, doc){ if(err) throw err; //Mostramos mensaje indicando que el documento con ID X se ha actualizado console.dir("Coleccion con ID: " + doc + " actualizada correctamente"); //Cerramos la conexión a la base de datos. return db.close(); }); });
mongoimport -d supermercado -c ventas --drop < ventas.jsonLo primero de todo sera la creación de nuestro espacio de trabajo e instalar el driver nativo de mongodb para node.js
mkdir hispabigdata cd hispabigdata npm install mongodbUna vez tenemos preparado el entorno de trabajo, vamos a crear nuestra aplicación app.js y añadimos el siguiente código:
mongod --dbpath /home/hispabigdata/data/ --port 27017 --logpath /home/hispabigdata/data/log/hispabigdata.log &
mongoimport -d supermercado -c ventas < ventas.jsonDisponemos de una colección con la venta de artículos de cada empleado, en la que los documentos tienen el siguiente esquema:
db.coll.insert({array:['aa','bb','cc','dd','ee','ff']})
var data = db.coll.findOne()
http://localhost:5984/_utils/
http://localhost:5984/_utils/
{ "_id" : "832t41121621a326ec63382f846d3142", "_rev" : "1-524521c989ff07s4fa62dad0366677b5", "nombre" : "Daniel Romero", "articulo" : "CouchDB en HispaBigData", "blog" : "HispaBigData", }
mongod --port 48018
db.Coleccion.ensureIndex( { campo: 1 } )
mongod --port 27017 --replSet NombreReplicaSet0
db.coleccion.ensureIndex( { "campo": 1 } )EnsureIndex() únicamente crea el índice si este no existe, usaremos un 1 si queremos que la ordenación sea ascendente y -1 si es descendente.
db.coleccion.ensureIndex( { "campo": 1 }, { background: true } )Por defecto MongoDB establece la opción de Background a false.
db.personal.insert({ nombre: "Daniel Romero", año: "2013", profesion: "Informatico", blog:"HispaBigData"}); db.personal.insert({ nombre: "Alberto Hernandez", año: "2012", profesion: "Informatico", blog:"HispaBigData"}); db.personal.insert({ nombre: "Raul Garcia", año: "2010", profesion: "Pintor"}); db.personal.insert({ nombre: "Manuel Sanchez", año: "2011", profesion: "Arquitecto"}); db.personal.insert({ nombre: "Antonio Gallardo", año: "2012", profesion: "Diseñadir", blog:"Diseñate"});
mkdir -p /data/rp1 /data/rp2
mongod --port 27017 --dbpath /data/rp1 --replSet reptest --smallfiles --oplogSize 128
Secundary:
mongod --port 27018 --dbpath /data/rp2 --replSet reptest --smallfiles --oplogSize 128
db.ejemplo.save({'name':'Daniel Romero', 'pais':'España', 'especialidad':'nodejs'})
db.ejemplo.save({'name':'Alberto Hernandez', 'pais':'España'})
exports.upload = function(req, res){ res.render('upload',{ title: 'ejemplo de subida de imagen por HispaBigData' }); };
npm install express-validatorVamos a modificar paso a paso el template por defecto que genera express:
doctype 5 html head title #{title} link(rel='stylesheet', href='/stylesheets/style.css') body header h1 #{title} block content block contact
173.192.57.100 http://registry.npmjs.org
mongodump -h localhost -d spotify -o spotydump
--journalCommitInterval <value>Puedes deshabilitar el uso del journal descomentando el parámetro nojournal en el archivo de configuración.
[root@localhost mongo]# cat /etc/mongod.conf | grep jour # Disables write-ahead journaling # nojournal = true
db.coleccion.insert( <documento> )