Laravel & MongoDB

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.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Material relacionado

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.