MongoDB es un sistema de base de datos NoSQL orientado a documentos. En los últimos años, MongoDB junto a Laravel han tenido una alta demanda en el ámbito laboral y en esta ocasión te vamos a explicar los pasos a seguir para que estas herramientas puedan trabajar en conjunto.
Preparación del entorno
Para poder trabajar con MongoDB debemos instalarlo según el entorno en el cual estemos trabajando. Para ello, instalaremos tanto el servidor de Mongo llamado mongod como el shell (interfaz interactiva de Javascript) llamado mongo para consultar y actualizar datos, así como realizar operaciones administrativas.
Instalación de MongoDB en Windows
Para comenzar debemos descargar el instalador en el siguiente enlace, donde debemos seleccionar la opción de Windows y presionar sobre el botón Download el cual comenzará la descarga. Cuando tengamos la descarga terminada, procederemos a ejecutar en forma de administrador el instalador de MongoDB, vamos a seguir las instrucciones y aceptar todos los términos.
Para iniciar el servidor de Mongo debemos ejecutar el archivo que se encuentra ubicado en la dirección C:\mongodb\bin\mongod.exe
. Si quieres interactuar con Mongo, puedes hacerlo ejecutando el archivo ubicado en C:\mongodb\bin\mongo.exe
Instalación de MongoDB en Linux
Para los sistemas operativos basados en Debian la instalación es muy simple, ya que en los repositorios oficiales de las distribuciones ya tenemos incluido MongoDB, así que para instalarlo solamente debemos ejecutar el comando:
# sudo apt-get install mongodb
Con esto ya lo tendríamos configurado y preparado para su uso, para iniciar el servidor escribimos en nuestra terminal:
# sudo service mongod start
Para interactuar con Mongo debemos ejecutar el comando:
# mongo
En caso de poseer alguna distribución que no esté basada en Debian puedes ingresar al siguiente enlace de la página oficial donde se muestran más opciones para instalar Mongo en Linux.
Instalación de MongoDB en Mac
En caso de poseer una Mac debemos ejecutar en nuestra terminal:
# brew install mongodb
Después de la instalación debemos crear una carpeta llamada db
para almacenar la configuración de Mongo ejecutando el comando:
# mkdir -p /data/db
Para iniciar el servidor solo debemos ejecutar mongod
en una nueva terminal y en el caso de querer interactuar con el Shell ejecutamos mongo
.
Configuración MongoDB en Laravel
Instalación del paquete necesario
El siguiente paquete extiende las clases originales del ORM Eloquent para generar soporte a MongoDB. Su instalación es muy simple y solo debemos requerirlo con Composer como se muestra en el siguiente comando:
# composer require jenssegers/mongodb
Antes de ejecutar el comando debes tener instalado el driver MongoDB en PHP. Podemos ver las instrucciones necesarias en la pagina oficial del lenguaje: http://php.net/manual/es/mongodb.installation.php.
Configuración de una nueva conexión de base de datos
Para comenzar nos dirigimos al archivo de configuración config/database.php
y agregaremos el siguiente código dentro del arreglo connections
:
<?php 'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'options' => [ 'database' => 'styde' // sets the authentication database required by mongo 3 ] ],
Como puedes notar hacemos uso del helper env
para evitar colocar los datos de entorno en el archivo de configuración. Para finalizar debemos agregar todos los datos necesarios en el archivo .env
, por ejemplo:
DB_CONNECTION=mongodb DB_HOST=localhost DB_PORT=27017 DB_DATABASE=styde DB_USERNAME=root DB_PASSWORD=root
Estos datos por supuesto deben coincidir con los de tu entorno.
Configuración en cada modelo
Debemos cambiar la clase a la cual extiende cada modelo, ya que como lo mencionamos anteriormente el paquete extiende de algunas clases del ORM Eloquent. Hacerlo es muy simple, solo debemos sustituir el nombre de espacio de la clase Eloquent
por el namespace de la clase del paquete:
<?php use Jenssegers\Mongodb\Eloquent\Model as MongoModel; class User extends MongoModel {}
Eloquent asumirá que cada colección tiene una llave primaria llamada id
. Se puede definir una llave distinta colocando la propiedad primaryKey
. Ademas también podemos definir la propiedad connection
para indicar al modelo cual conexión debe utilizar.
Ahora es cuestión de seguir trabajando con Laravel ya que el ORM funcionará tal y como estaría funcionando con MySQL, PostgreSQL o SQLServer. Si deseas conocer un poco más sobre este paquete puedes visitar el repositorio oficial en GitHub. En caso de tener alguna duda o sugerencia puedes hacerla a través de los comentarios.
Si te gustó esta publicación por favor compártela en tus redes. Síguenos en Twitter para obtener más tips y tutoriales útiles.
Material relacionado
- Convenciones de nombres de Eloquent en Laravel
- MariaDB vs MySQL
- Configuración y uso de base de datos en el entorno de pruebas automatizadas con Laravel y PHPUnit
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.