Skip to content

MongoDB

Introducción

MongoDB es una de las bases de datos orientadas a documentos NoSQL más populares, utilizada por su alta carga de escritura (útil para análisis o IoT) y alta disponibilidad (fácil de configurar conjuntos de réplicas con failover automático). También puede dividir la base de datos fácilmente para escalabilidad horizontal y tiene un lenguaje de consulta potente para realizar agregaciones, búsqueda de texto o consultas geoespaciales. En lugar de almacenar datos en tablas de filas o columnas como las bases de datos SQL, cada registro en una base de datos MongoDB es un documento descrito en BSON, una representación binaria de los datos. Las aplicaciones pueden luego recuperar esta información en un formato JSON. Admite una amplia variedad de tipos de datos, incluidos documentos, arreglos, documentos incrustados y datos binarios. Antes de usar MongoDB con Laravel, recomendamos instalar y usar el paquete mongodb/laravel-mongodb a través de Composer. El paquete laravel-mongodb es mantenido oficialmente por MongoDB, y aunque MongoDB es compatible de manera nativa con PHP a través del driver de MongoDB, el paquete Laravel MongoDB ofrece una integración más rica con Eloquent y otras características de Laravel:

Instalación

Driver de MongoDB

Para conectarte a una base de datos MongoDB, se requiere la extensión PHP mongodb. Si estás desarrollando localmente utilizando Laravel Herd o instalaste PHP a través de php.new, ya tienes esta extensión instalada en tu sistema. Sin embargo, si necesitas instalar la extensión manualmente, puedes hacerlo a través de PECL:

pecl install mongodb

Para obtener más información sobre la instalación de la extensión PHP de MongoDB, consulta las instrucciones de instalación de la extensión PHP de MongoDB.

Iniciar un Servidor MongoDB

El MongoDB Community Server se puede utilizar para ejecutar MongoDB localmente y está disponible para su instalación en Windows, macOS, Linux o como un contenedor Docker. Para aprender cómo instalar MongoDB, consulta la guía oficial de instalación de MongoDB Community. La cadena de conexión para el servidor MongoDB se puede establecer en tu archivo .env:

MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"

Para alojar MongoDB en la nube, considera usar MongoDB Atlas.
Para acceder a un clúster de MongoDB Atlas localmente desde tu aplicación, necesitarás agregar tu propia dirección IP en la configuración de red del clúster a la lista de acceso IP del proyecto. La cadena de conexión para MongoDB Atlas también se puede configurar en tu archivo .env:

MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"

Instalar el Paquete Laravel MongoDB

Finalmente, usa Composer para instalar el paquete Laravel MongoDB:

composer require mongodb/laravel-mongodb
lightbulb

Esta instalación del paquete fallará si la extensión mongodb de PHP no está instalada. La configuración de PHP puede diferir entre la CLI y el servidor web, así que asegúrate de que la extensión esté habilitada en ambas configuraciones.

Configuración

Puedes configurar tu conexión a MongoDB a través del archivo de configuración config/database.php de tu aplicación. Dentro de este archivo, añade una conexión mongodb que utilice el driver mongodb:

'connections' => [
    'mongodb' => [
        'driver' => 'mongodb',
        'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
        'database' => env('MONGODB_DATABASE', 'laravel_app'),
    ],
],

Características

Una vez que tu configuración esté completa, puedes usar el paquete mongodb y la conexión a la base de datos en tu aplicación para aprovechar una variedad de funciones poderosas:

  • Usando Eloquent, los modelos se pueden almacenar en colecciones de MongoDB. Además de las características estándar de Eloquent, el paquete Laravel MongoDB proporciona características adicionales como relaciones embebidas. El paquete también ofrece acceso directo al driver de MongoDB, que se puede usar para ejecutar operaciones como consultas en crudo y pipelines de agregación.
  • Escribir consultas complejas utilizando el constructor de consultas.
  • El driver de caché mongodb cache driver está optimizado para usar características de MongoDB como índices TTL para limpiar automáticamente entradas de caché expirada.
  • Despachar y procesar trabajos en cola con el driver de cola mongodb.
  • Almacenar archivos en GridFS, a través del Adaptador GridFS para Flysystem.
  • La mayoría de los paquetes de terceros que utilizan una conexión a la base de datos o Eloquent se pueden usar con MongoDB. Para continuar aprendiendo cómo usar MongoDB y Laravel, consulta la guía de inicio rápido de MongoDB.