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 PHPmongodb. Con Laravel Herd o php.new ya viene instalada. Si la instalas manualmente, usa PECL.
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:Instalación del paquete laravel-mongodb
Instala el paquetemongodb/laravel-mongodb con Composer.
Configuración
Variables de entorno
Añade la información de conexión a MongoDB en.env.
config/database.php
Añade la conexiónmongodb al array connections en config/database.php.
Funcionalidades principales
Modelos Eloquent
ExtendiendoMongoDB\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 enconfig/cache.php.
.env.
Driver de colas
MongoDB puede usarse como driver de colas. Consulta la documentación del driver de colas. Añade la conexión enconfig/queue.php.
.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.config/filesystems.php.
Búsqueda vectorial (Vector Search)
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.
vectorSearch está disponible en el query builder.
Búsqueda de texto completo (motor Scout)
Puedes usar el motor Scoutmongodb 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).mongodb en .env.
Searchable al modelo.
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
Lista de comprobación de instalación
Lista de comprobación de instalación
- Instala la extensión de PHP con
pecl install mongodb - Arranca el servidor MongoDB (local, Docker o Atlas)
- Instala el paquete con
composer require mongodb/laravel-mongodb - Configura
MONGODB_URIyMONGODB_DATABASEen.env - Añade la conexión
mongodbenconfig/database.php
Cuándo usar MongoDB o MySQL
Cuándo usar MongoDB o MySQL
| Característica | MongoDB | MySQL |
|---|---|---|
| Modelo de datos | Documento (JSON/BSON) | Tabla (filas y columnas) |
| Esquema | Sin esquema (flexible) | Esquema fijo |
| Escalado | Fácil escalado horizontal | Predominantemente vertical |
| Transacciones | Multi-documento (v4+) | ACID completo |
| Casos ideales | Logs, analítica, IoT, datos de estructura flexible | Datos estructurados, relaciones complejas |
Uso por funcionalidad
Uso por funcionalidad
| Funcionalidad | Configuración |
|---|---|
| Modelo Eloquent | Extender MongoDB\Laravel\Eloquent\Model |
| Query builder | DB::connection('mongodb')->collection(...) |
| Caché | config/cache.php + CACHE_STORE=mongodb |
| Colas | config/queue.php + QUEUE_CONNECTION=mongodb |
| Almacenamiento de archivos | config/filesystems.php + adaptador GridFS |
| Búsqueda vectorial | Model::query()->vectorSearch(...) (Atlas obligatorio) |
| Búsqueda de texto | SCOUT_DRIVER=mongodb + trait Searchable (Atlas obligatorio) |
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