jueves, 5 de enero de 2017

MongoDb: Introducción

Bueno. ya estoy un poco cansado de Angular2 que es muuuuuy extenso, así que voy a dar una pequeña introducción de MongoDB, resumiendo a Romanian Coder.


1. Instalacion de MongoDB

Para ello vamos a ver lo que nos dice la web oficial de MongoDB para instalar en Ubuntu (en este caso ubuntu 16, y la versión 3.2 de MongoDB). Abrimos una ventana de terminal

1. Importar la clave pública para el gestor de paquetes.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
2. Crear la lista de fichero para mongo db (Ubuntu 16.04)
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
3. Recargar la base de datos de paquetes
sudo apt-get update
4. Instalar los paquetes de MongoDB
sudo apt-get install -y mongodb-org
5. Ejecutar MongoDB
sudo service mongod start
6. Se puede verificar que está en marcha viendo si hay actividad en el fichero

/etc/mongod.conf.27017,

y se puede parar el servicio como:

  sudo service mongod stop 

y reiniciarlo como:

  sudo service mongod restart 


2. Instalacion de Robomongo

Este programa nos ayuda en muchas tareas de mantenimiento de MongoDB.

Para ello se descarga desde la web oficial de Robomongo. Para el caso de Ubuntu, se puede hacer lo siguiente:

1. Descargar el fichero (en este caso robomongo-0.9.0-linux-x86_64-0786489.tar.gz)
2. Ejecutar tar xf robomongo-0.9.0-linux-x86_64-0786489.tar.gz
3. Moverlo a /usr/bin/robomongo:
    sudo mv robomongo-0.9.0-linux-x86_64-0786489 /usr/bin/robomongo
4. Instrucciones para instalar elementos en el gnome.desktop:
    sudo apt-get install --no-install-recommends gnome-panel
5. Crear un nuevo acceso directo en el escritorio:
    /usr/bin/gnome-desktop-item-edit /home/<user>/<nombreDesktop>/ --create-new
  DONDE:
  <user>: es el nombre del usuario que utilizamos para entrar en ubuntu.
  <nombreDesktop> es la carpeta que cuelga de /home/<user> que hace referencia al Escritorio.
      Los valores posibles son :Desktop, Escritorio, Escriptori ...... , en mi caso Escriptori
6. Ahora aparecera la siguiente pantalla o parecida,


7. Y quedará el acceso directo creado. Pero si queremos que aparezca en el Launcher, arrastraremos el acceso directo al Launcher y ya está.

8. Ahora ejecutamos desde el lanzador, y aparece esta pantalla. Le damos create:


y aparece esta otra y le damos de nombre local y el resto igual (address : localhost: 27017)





y le damos al test y funciona y luego save.

3. Conceptos básicos  

En MongoDB hay 3 conceptos básicos:

1. Document que es un array de propiedades con sus correspondientes valores. Es equivalente a un registro de una BBDD relacional. Por ejemplo un document es:

  { name: "John", age:21 , isTall: true }

2. Collection que es un conjunto de documentos. Que sería el equivalente de una tabla.

3. Database que es un conjunto de collections. Coincide con una base de datos.


4. Sentencias básicas.

Podemos abrir una sesion de terminal  y ejecutar mongo (que es la utilidad que lleva instalada para manejar mongoDB)



Y podemos ejecutar los comados básicos de manejo de BS y colecciones.


show dbs: Muestra las BDs que temos creadas.
use myDBS: Usa la BD myDBS, si no existe, previamente la crea.
db: muestra la BB en uso.
db.createCollection("myCollection"); : Crea la colección "myCollection".
show collections : muestra las colecciones que tenos en la BD.
db.myCollection.drop(); : Borra la colección myCollection
db.dropDatabase();: Barra la BD.

Las sentencias pueden ser multilinea.


Manejo de documentos:


db.myCollection.insert({name: "Juan" , edad: 23}); : Inserta este documento, o un array de documentos.

db.myCollection.find(expresión_filtro).comando_pipe(); :Hace un filtro basado en la expresión de filtro y arregla la salida con el comando.

  Valores de expresión_filtro:
      {}    No hay restricción de búsqueda
      {name:"Juan"}    Que el name sea "Juan"
      {} , {name:1, _d:0} Muestra solo el nombre de todos los documentos.
      { edad: {$gt: 20}}    Muestra solo aquellos que la edad es mayor de 20
      { name: /a/}    Muestra solo aquellos que el nombre contiene la letra a
      { name: /^Ju/}    Muestra solo aquellos que el nombre comienza por "Ju"
      { edad: {$gt: 20} ,  name:/^Ju/}  Si la edad es mayor de 20 y el nombre comienza por "Ju"

  Valores para el comando_pipe:
     pretty()  La salida es mas arreglada.
     count()  Cuenta los documentos.
     limit(4)  Solo saca 4 resultados
     sort( name: +1 )  La salida esta ordenada ascendientement por nombre. (En -1 es descendiente)
     forEach(function(doc){print("Nombre de la persona: " + doc.name)})  Mostrará "Nombre de la persona:" junto con su nombre para cada registro de la selección.

db.myCollection.update(exp_filtro, exp_set, exp_conjunto) : Actualiza una colección en base a una expresion de filtro exp_filtro, actualizando los campos que se indican en exp_set, y si se hacen todos o no con la expresion exp_mult.

   Los valores de exp_filtro coinciden con el apartado anterior de expresion_filtro.

   Los valores de exp_set:
       { name: "Juan José"}  Cambia el nombre a "Juan José"
       { name: "Juan José", edad: 12}  Cambia el nombre a "Juan José" y edad a 12
 
  Los valores de exp_conjunto:
       { multiline: true }  Cambia todos los registros afectados a la vez.
 
db.myCollection.remove({expresión_filtro); : Elimina los documentos de la colección afectados por la expresion de filtro.


5. Utilización de robomongo.

Permite explorar la BD que hemos creado, y al mismo tiempo ver todos los elemetos que tiene esta base de datos.

También permite ejecutar comandos, y también consultar los comandos disponibles.

Permite ver que comandos se estana ejecutando a medida que exploramos nuestra Bd y csu elementos. Por tanto no hace falta memorizar nada.




No hay comentarios :

Publicar un comentario