Skip to main content

Introducción

MongoDB es una de las bases de datos NoSQL orientadas a documentos más populares. Destaca por su alto rendimiento de escritura (ideal para analítica e IoT), alta disponibilidad (failover automático con réplicas), escalado horizontal (sharding) y un potente lenguaje de consulta (agregaciones, búsqueda de texto completo y consultas geoespaciales). A diferencia del formato filas/columnas de una base de datos SQL, cada registro en MongoDB es un documento en formato BSON (JSON binario). La aplicación puede recuperar estos datos en formato JSON.
Para usar MongoDB con Laravel, se recomienda el paquete mongodb/laravel-mongodb, mantenido oficialmente por MongoDB. Ofrece una integración muy completa con Eloquent y con las distintas funcionalidades de Laravel.

Instalación

Driver PHP de MongoDB

Para conectarte a MongoDB necesitas la extensión de PHP mongodb. Con Laravel Herd o php.new ya viene instalada. Si la instalas manualmente, usa PECL.
Consulta la guía de instalación de la extensión PHP MongoDB para más detalles.
Comprueba que la extensión PHP mongodb esté activa tanto en CLI como en el servidor web. Las configuraciones pueden diferir.

Arrancar el servidor MongoDB

Puedes usar MongoDB Community Server para desarrollo local. Consulta la guía de instalación oficial para Windows, macOS, Linux y Docker. Con Docker:
Para hosting en la nube puedes usar MongoDB Atlas. Para acceder a un cluster de Atlas desde local necesitas añadir tu IP a la lista de acceso del proyecto.

Instalación del paquete laravel-mongodb

Instala el paquete mongodb/laravel-mongodb con Composer.

Configuración

Variables de entorno

Añade la información de conexión a MongoDB en .env.
Si utilizas MongoDB Atlas, cambia la cadena de conexión a la de Atlas.

config/database.php

Añade la conexión mongodb al array connections en config/database.php.
Si combinas una base de datos relacional como MySQL con MongoDB, deja default como está y añade simplemente la conexión mongodb. Podrás cambiar de conexión por modelo.

Funcionalidades principales

Modelos Eloquent

Extendiendo MongoDB\Laravel\Eloquent\Model puedes trabajar con MongoDB de forma casi idéntica a un modelo Eloquent normal.
MongoDB no tiene esquema fijo, por lo que no hacen falta migraciones. Al guardar un documento se crea automáticamente la colección.

Operaciones CRUD básicas

Se opera con la misma API que Eloquent normal.

Arrays y documentos embebidos

Puedes trabajar directamente con arrays y documentos embebidos, uno de los puntos fuertes de MongoDB.

Query Builder

Con el query builder de MongoDB puedes escribir consultas complejas. Consulta la documentación del query builder de laravel-mongodb para más detalles.

Driver de caché

El driver de caché de MongoDB elimina automáticamente las entradas caducadas usando índices TTL. Consulta la documentación del driver de caché. Añade el store en config/cache.php.
Cambia el driver de caché a MongoDB en .env.

Driver de colas

MongoDB puede usarse como driver de colas. Consulta la documentación del driver de colas. Añade la conexión en config/queue.php.
Cambia la conexión de colas a MongoDB en .env.

Almacenamiento de archivos con GridFS

Con GridFS de MongoDB puedes almacenar archivos usando el adaptador GridFS para Flysystem. Consulta la documentación de GridFS.
Añade el disco en config/filesystems.php.
Con MongoDB Atlas Vector Search puedes hacer búsquedas por similitud mediante embeddings vectoriales. Se vectorizan datos (texto, imagen, audio…) y se guardan; luego se recuperan los documentos más cercanos al vector de consulta. Es una función pensada para IA / machine learning.
La búsqueda vectorial solo está disponible en MongoDB Atlas. No funciona con MongoDB Community Server local ni con entornos auto-hospedados. Debes crear previamente un índice de Vector Search en la consola de Atlas.
El método vectorSearch está disponible en el query builder.

Búsqueda de texto completo (motor Scout)

Puedes usar el motor Scout mongodb para aprovechar la búsqueda de texto completo de Laravel Scout con MongoDB. Internamente usa MongoDB Atlas Search y admite búsquedas difusas y con comodines. Consulta la documentación del motor Scout.
El motor Scout de MongoDB también requiere MongoDB Atlas. La colección del índice de Scout debe ser distinta de la del modelo. Se aplica automáticamente el prefix de config/scout.php (por defecto, el nombre de la aplicación).
Configura el driver de Scout como mongodb en .env.
Añade el trait Searchable al modelo.
Crea el índice de Scout e importa los datos existentes.
Realiza búsquedas con la API estándar de Scout.

Uso combinado con MySQL

En Laravel puedes usar MySQL y MongoDB a la vez. Indica la conexión con la propiedad $connection en cada modelo.
Si quieres definir relaciones entre modelos de MySQL y de MongoDB, consulta las relaciones híbridas.

Resumen

  1. Instala la extensión de PHP con pecl install mongodb
  2. Arranca el servidor MongoDB (local, Docker o Atlas)
  3. Instala el paquete con composer require mongodb/laravel-mongodb
  4. Configura MONGODB_URI y MONGODB_DATABASE en .env
  5. Añade la conexión mongodb en config/database.php

Próximos pasos

Documentación oficial de laravel-mongodb

Referencia detallada de todas las funciones: Eloquent, query builder, relaciones, etc.

Guía rápida

Aprende rápidamente el uso básico de MongoDB con Laravel

Configuración de base de datos

Bases de la configuración de conexiones a base de datos en Laravel

Introducción a Eloquent

Uso básico del ORM Eloquent
Última modificación el 13 de julio de 2026

Temas relacionados

Búsqueda