Diferencia entre revisiones de «Usuario:ManuelRomero/mongoDB/conceptos»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «{{:Usuario:ManuelRomero/mongoDB/nav}}»)
 
Línea 1: Línea 1:
 
{{:Usuario:ManuelRomero/mongoDB/nav}}
 
{{:Usuario:ManuelRomero/mongoDB/nav}}
 +
 +
===Concepto===
 +
 +
*Mongo db es una base de datos de documentos '''''Document Database'''''
 +
 +
*En lugar de Base de datos, tablas, columnas y filas, tenemos base de datos, colecciones y documentos
 +
 +
*La siguiente figura trata de mostrar la comparativa entre elementos
 +
 +
[[Archivo:mongo_sql.png]]
 +
*Las bases de datos en sql serán bases de datos en mongo
 +
 +
*Los tablas en sql serán colleciones en mongo
 +
 +
 +
*Los registros o tuplas serán documentos en mongo
 +
 +
 +
*Un campo será un elemento del documento (campo en el json o array).
 +
 +
 +
 +
 +
 +
 +
*En Mongo una Base de datos es un conjunto de colecciones
 +
 +
 +
*Una colección es un conjunto o serie de documentos
 +
 +
 +
*Un documento es igual que un array asociativo en php. Puede ser multidimensional
 +
 +
 +
*Una colección es como una tabla; Es un conjunto de documentos e índices
 +
 +
 +
 +
 +
===Mongo gestión en línea de comandos===
 +
 +
 +
https://docs.mongodb.com/manual/core/databases-and-collections/
 +
 +
 +
*Vamos a usar mongo como usaríamos mysql en línea de comnados
 +
 +
 +
<source lang=bash>
 +
 +
 +
mongo
 +
 +
 +
</source>
 +
 +
 +
*Seleccionar una base de datos en mongo
 +
 +
 +
<source lang=bash>
 +
 +
 +
use <db>
 +
 +
 +
</source>
 +
 +
 +
*Crear una base de datos en mongo, consiste en especificar una que no existe
 +
 +
 +
use <new_db>
 +
 +
 +
*Ver las colecciones de una base de datos
 +
 +
 +
<source lang=bash>
 +
 +
 +
show collections
 +
 +
 +
</source>
 +
 +
 +
*Crear una colección nueva, al insertar el primer documento en una collección que no exista, ésta se crea
 +
 +
 +
*Para insertar un documento usamos el método '''''save()'''''
 +
 +
 +
<source lang=bash>
 +
 +
 +
use datos_manuel
 +
 +
 +
db.datos_manuel.amigos()
 +
 +
 +
show collections
 +
 +
 +
</source>
 +
 +
 +
*Ver la estructura de una colección
 +
 +
 +
 +
 +
 +
 +
*Ver el contenido de una coleccion  (select * from tabla)
 +
 +
 +
<source lang=bash>
 +
 +
 +
db.<colecion>.find()
 +
 +
 +
</source>
 +
 +
 +
*Dar a la salida un formato más legible
 +
 +
 +
<source lang=bash>
 +
 +
 +
db.<colecion>.find().pretty()
 +
 +
 +
</source>
 +
 +
 +
 +
 +
===MongoDB y PHP===
 +
 +
 +
*Instalar el driver
 +
 +
 +
#Interrogamos al sistema para ver si el driver está instalado
 +
 +
 +
php --re mongo
 +
 +
 +
*En nuestro caso obtenemos la siguiente respuesta, por lo que no está instalado
 +
 +
 +
Exception: Extension mongo does not exist
 +
 +
 +
*Para instalarlo lo podemos hacer de diferentes modos. En nuestro caso usaremos pecl
 +
 +
 +
sudo pecl install mongo
 +
 +
 +
*Es importante leer la última línea de la instación
 +
 +
 +
...
 +
 +
 +
You should add "extension=mongo.so" to php.ini
 +
 +
 +
*Pues lo hacemos
 +
 +
 +
 +
 +
*Si posteriormente queremos acutalizar
 +
 +
 +
sudo pecl update-channels
 +
 +
 +
sudo pecl upgrade mongo
 +
 +
 +
*No olvidemos rebotar el sistema para que el driver tenga funcionalidad en el mismo
 +
 +
 +
*En mi caso aún no funcionaba y he realizado lo siguiente:
 +
 +
 +
Crear un fichero mongo.ini para que cargue la extension
 +
 +
 +
 +
 +
 +
#/etc/php5/mods-available $ sudo ln -s ../mods-available/mongo.ini  mongo.ini
 +
 +
 +
*El contenido del fichero mongo.ini
 +
 +
 +
extension=mongo.so
 +
 +
 +
*Reboto el servicio y verifico que está el módulo
 +
 +
 +
php --re monog
 +
 +
 +
o
 +
 +
 +
php -m
 +
 +
 +
 +
 +
;Nomenglatura
 +
 +
 +
Tabla            colección o collection
 +
 +
 +
fila o tupla         
 +
 +
 +
campo           
 +
 +
 +
valor del campo
 +
 +
 +
consulta
 +
 +
 +
                  diccionario o dictionary
 +
 +
 +
;Conectar a la bd
 +
 +
 +
mongo
 +
 +
 +
;seleccionando BD
 +
 +
 +
*Muestra la bd con la que actualmente estoy trabajando, por defecto '''''test'''''
 +
 +
 +
db
 +
 +
 +
*Mostrar todas las bases de datos del sistema que contengan algo de información
 +
 +
 +
show dbs
 +
 +
 +
*Cambiar a una base de datos llamada local
 +
 +
 +
use local
 +
 +
 +
;
 +
 +
 +
 +
 +
===Autorización===
 +
 +
 +
*Si usamos autorización ya no cualquiera puede hacer cualquier cambio en la base de datos
 +
 +
 +
*Para autorizarse
 +
 +
 +
db.auth("user","pass");
 +
 +
 +
*(user y pass son las credenciales).
 +
 +
 +
==Práctica==
 +
 +
 +
*Instalamos mongodb en docker
 +
 +
 +
<source lang=bash>
 +
 +
 +
  docker run --name mongodb -p 27017:27017 -v mongodbdata:/data/db mongo
 +
 +
 +
</source>
 +
 +
 +
*Instalamos la librería de php para utilizar mongo
 +
 +
 +
<source lang=bash>
 +
 +
 +
sudo apt-get install php-mongodb
 +
 +
 +
</source>
 +
 +
 +
 +
 +
*creamos '''''composer.json'''''
 +
 +
 +
<source lang=php>
 +
 +
 +
{
 +
 +
 +
    "require": {
 +
 +
 +
        "mongodb/mongodb":"^1.0.0"
 +
 +
 +
    }
 +
 +
 +
}
 +
 +
 +
</source>
 +
 +
 +
*Orquestamos en el directorio del nuevo proyecto
 +
 +
 +
<source lang=bash>
 +
 +
 +
composer update
 +
 +
 +
</source>

Revisión de 04:35 25 mar 2020



Concepto

  • Mongo db es una base de datos de documentos Document Database
  • En lugar de Base de datos, tablas, columnas y filas, tenemos base de datos, colecciones y documentos
  • La siguiente figura trata de mostrar la comparativa entre elementos

Mongo sql.png

  • Las bases de datos en sql serán bases de datos en mongo
  • Los tablas en sql serán colleciones en mongo

  • Los registros o tuplas serán documentos en mongo

  • Un campo será un elemento del documento (campo en el json o array).

  • En Mongo una Base de datos es un conjunto de colecciones

  • Una colección es un conjunto o serie de documentos

  • Un documento es igual que un array asociativo en php. Puede ser multidimensional

  • Una colección es como una tabla; Es un conjunto de documentos e índices

Mongo gestión en línea de comandos

https://docs.mongodb.com/manual/core/databases-and-collections/

  • Vamos a usar mongo como usaríamos mysql en línea de comnados

 
−	
 mongo
 
−

  • Seleccionar una base de datos en mongo

 
−	
 use <db>
 
−

  • Crear una base de datos en mongo, consiste en especificar una que no existe

use <new_db>

  • Ver las colecciones de una base de datos

 
−	
 show collections
 
−

  • Crear una colección nueva, al insertar el primer documento en una collección que no exista, ésta se crea

  • Para insertar un documento usamos el método save()

 
−	
 use datos_manuel 
 
−	
 db.datos_manuel.amigos()
 
−	
 show collections
 
−

  • Ver la estructura de una colección

  • Ver el contenido de una coleccion (select * from tabla)

 
−	
 db.<colecion>.find()
 
−

  • Dar a la salida un formato más legible

 
−	
 db.<colecion>.find().pretty()
 
−

MongoDB y PHP

  • Instalar el driver

  1. Interrogamos al sistema para ver si el driver está instalado

php --re mongo

  • En nuestro caso obtenemos la siguiente respuesta, por lo que no está instalado

Exception: Extension mongo does not exist

  • Para instalarlo lo podemos hacer de diferentes modos. En nuestro caso usaremos pecl

sudo pecl install mongo

  • Es importante leer la última línea de la instación

...

You should add "extension=mongo.so" to php.ini

  • Pues lo hacemos

  • Si posteriormente queremos acutalizar

sudo pecl update-channels

sudo pecl upgrade mongo

  • No olvidemos rebotar el sistema para que el driver tenga funcionalidad en el mismo

  • En mi caso aún no funcionaba y he realizado lo siguiente:

− Crear un fichero mongo.ini para que cargue la extension


#/etc/php5/mods-available $ sudo ln -s ../mods-available/mongo.ini  mongo.ini

  • El contenido del fichero mongo.ini

extension=mongo.so

  • Reboto el servicio y verifico que está el módulo

php --re monog

− o

php -m

Nomenglatura

Tabla            colección o collection

fila o tupla          

campo            

valor del campo

consulta

                 diccionario o dictionary

Conectar a la bd

mongo

seleccionando BD

  • Muestra la bd con la que actualmente estoy trabajando, por defecto test

db

  • Mostrar todas las bases de datos del sistema que contengan algo de información

show dbs

  • Cambiar a una base de datos llamada local

use local

Autorización

  • Si usamos autorización ya no cualquiera puede hacer cualquier cambio en la base de datos

  • Para autorizarse

db.auth("user","pass");

  • (user y pass son las credenciales).

Práctica

  • Instalamos mongodb en docker

 
−	
  docker run --name mongodb -p 27017:27017 -v mongodbdata:/data/db mongo
 
−

  • Instalamos la librería de php para utilizar mongo

 
−	
 sudo apt-get install php-mongodb
 
−

  • creamos composer.json

 
−	
{
 
−	
    "require": {
 
−	
        "mongodb/mongodb":"^1.0.0"
 
−	
    }
 
−	
}
 
−

  • Orquestamos en el directorio del nuevo proyecto

 
−	
 composer update
 
−