Overview
Esta guía muestra cómo agregar Laravel MongoDB a una nueva aplicación web Laravel, conectarse a un clúster de MongoDB alojado en MongoDB Atlas y realizar operaciones de lectura y escritura sobre los datos.
Tip
Si prefieres conectarte a MongoDB mediante la librería PHP de MongoDB sin Laravel, consulta Conectarse a MongoDB en la documentación de la librería PHP de MongoDB.
La integración de Laravel extiende la sintaxis de Eloquent y Query Builder para almacenar y recuperar datos desde MongoDB.
MongoDB Atlas es un servicio de base de datos gestionada en la nube que aloja las implementaciones de MongoDB. Se puede crear una implementación propia gratuita de MongoDB Atlas (sin necesidad de tarjeta de crédito) siguiendo los pasos de esta guía.
Tip
Se puede descargar el proyecto completo de aplicación web clonando el repositorio de GitHub laravel-quickstart.
Requisitos previos
Para crear la aplicación Get Started, necesitas tener instalados los siguientes programas en tu entorno de desarrollo:
Una aplicación de terminal y shell. Para usuarios de MacOS, utiliza terminal o una aplicación similar. Para usuarios de Windows, utiliza PowerShell.
Descargue e instale
Realiza los siguientes pasos para instalar y agregar las dependencias de Laravel Integration a una aplicación web Laravel.
Tip
Como alternativa a los siguientes pasos de instalación, puedes usar Laravel Herd para instalar MongoDB y configurar un entorno de desarrollo para Laravel MongoDB. Para obtener más información sobre cómo usar Laravel Herd con MongoDB, consulta Instalación de MongoDB a través de Herd Pro en la documentación de Herd.
Instale la extensión PHP de MongoDB
Laravel MongoDB requiere la extensión PHP de MongoDB para gestionar las conexiones y comandos de MongoDB. Para aprender cómo instalar la extensión PHP de MongoDB, consulta el paso Instalar la extensión PHP de MongoDB de la guía Cómo empezar con la librería PHP.
Instalar Laravel
Asegúrate de que la versión de Laravel que instales sea compatible con la versión de la Integración de Laravel. Para saber qué versiones son compatibles, consulta la página de Compatibilidad.
Ejecuta el siguiente comando para instalar Laravel:
composer global require laravel/installer
Cuando se complete la instalación, el comando mostrará el siguiente mensaje:
Using version ^<version number> for laravel/installer
Crea una aplicación Laravel
Ejecute el siguiente comando para generar una nueva aplicación web de Laravel llamada my-app:
laravel new my-app
Cuando se complete la instalación, el comando mostrará el siguiente mensaje:
INFO Application ready in [my-app]. You can start your local development using: ➜ cd my-app ➜ php artisan serve New to Laravel? Check out our bootcamp and documentation. Build something amazing!
Agrega Laravel MongoDB a las dependencias
Ejecuta el siguiente comando para agregar la dependencia Laravel MongoDB a tu aplicación:
composer require mongodb/laravel-mongodb:^5.8
Cuando finalice la instalación, comprueba que el archivo composer.json incluya la siguiente línea en el objeto require:
"mongodb/laravel-mongodb": "^5.8"
Después de completar estos pasos, tendrás un nuevo proyecto Laravel con las dependencias de Integración Laravel instaladas.
Cree una implementación de MongoDB
Cree una implementación gratuita de MongoDB en Atlas
Complete la guía de inicio de MongoDB para configurar una nueva cuenta de Atlas y cargar datos de muestra en una nueva implementación de MongoDB de nivel gratuito. Siga las instrucciones en las pestañas de Cloud Deployment para crear su implementación de MongoDB Atlas en la nube.
Después de completar estos pasos, tendrás una nueva implementación de MongoDB de nivel gratuito en Atlas, credenciales de usuario de base de datos y datos de muestra cargados en tu base de datos.
Crear una cadena de conexión
Puede conectarse a su implementación de MongoDB proporcionando un URI de conexión, también llamado cadena de conexión, que instruye al controlador sobre cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.
La cadena de conexión incluye el nombre de host o la dirección IP y el puerto de la implementación, el mecanismo de autenticación, las credenciales de usuario cuando sea aplicable, y las opciones de conexión.
Para conectarse a una instancia o implementación que no esté alojada en Atlas, consulte el apartado Cadenas de conexión en el manual del servidor.
Encuentra tu cadena de conexión de MongoDB Atlas.
Para recuperar la cadena de conexión para la implementación que creó en el paso anterior, inicie sesión en su cuenta de Atlas y navegue a la página Clusters bajo la sección Database. Haga clic en el botón Connect para la nueva implementación.

Si aún no tienes un usuario de base de datos configurado, MongoDB te pedirá que crees y configures un nuevo usuario.
Haga clic en el botón Drivers debajo de Connect to your application y seleccione "PHP" del menú de selección Driver y la versión que mejor coincida con la versión que instaló del menú de selección Version.
Asegúrate de que la opción View full code sample esté desmarcada para ver solo la cadena de conexión.
Actualiza el marcador de posición de la contraseña.
Pega esta cadena de conexión en un archivo en tu editor de texto preferido y reemplaza el marcador de posición <db_password> con la contraseña de tu usuario de base de datos. La cadena de conexión ya está completada con el nombre de usuario de tu usuario de base de datos.
Guarda este archivo en una ubicación segura para usarlo en el siguiente paso.
Después de completar estos pasos, hay una cadena de conexión que contiene el nombre de usuario y la contraseña de la base de datos.
Configure su conexión con MongoDB
Configura el archivo de variables de entorno de la aplicación
Copia el archivo .env.example en un archivo llamado .env en el directorio raíz del proyecto ejecutando el siguiente comando de shell:
cp .env.example .env
Abra el archivo .env y añada o edite las siguientes variables y valores. Reemplace el marcador de posición <connection string> con su cadena de conexión del paso Crear una cadena de conexión:
DB_CONNECTION=mongodb DB_URI="<connection string>"
Por ejemplo, si tu cadena de conexión es "mongodb+srv://myUser:myPass123@mongo0.example.com/", tu variable DB_URI coincide con la siguiente línea:
DB_URI="mongodb+srv://myUser:myPass123@mongo0.example.com/"
Nota
Asegúrate de que estas variables en tu archivo .env estén indefinidas en la shell donde ejecutes tu aplicación. Las variables de entorno en el shell tienen prioridad sobre las del archivo .env.
Configura la cadena de conexión en la configuración de la base de datos
Abra el archivo database.php en el directorio config y configure la conexión de base de datos predeterminada a la variable de entorno DB_CONNECTION, como se muestra en la siguiente línea:
'default' => env('DB_CONNECTION'),
Agregue la siguiente entrada resaltada mongodb al arreglo connections en el mismo archivo:
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_URI'), 'database' => 'sample_mflix', ], ], // ...
Agregar el proveedor de Integración de Laravel
Abre el archivo providers.php en el directorio bootstrap y añade la siguiente entrada al arreglo:
MongoDB\Laravel\MongoDBServiceProvider::class,
Tip
Para aprender a registrar el proveedor en Laravel 10.x, consulta Registrando proveedores.
Tras completar estos pasos, tu aplicación web Laravel estará lista para conectarse a MongoDB.
Ver datos de MongoDB
Crea un modelo y un controlador
Cree un modelo llamado Movie para representar datos de la colección de muestra movies en su base de datos de MongoDB y el controlador de recursos correspondiente ejecutando el siguiente comando:
php artisan make:model Movie -cr
Cuando el comando se completa, muestra el siguiente mensaje:
INFO Model [app/Models/Movie.php] created successfully. INFO Controller [app/Http/Controllers/MovieController.php] created successfully.
Edita el modelo para usar la integración de Laravel
Abre el modelo Movie.php en tu directorio app/Models y realiza las siguientes ediciones:
Reemplace la importación de
Illuminate\Database\Eloquent\ModelporMongoDB\Laravel\Eloquent\ModelEspecifica
"mongodb"en el campo$connection
El archivo Movie.php editado contiene el siguiente código:
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Movie extends Model { protected $connection = 'mongodb'; }
Añadir una función de controlador
Abra el archivo MovieController.php en su directorio app/Http/Controllers. Reemplace la función show() con el siguiente código para recuperar resultados que coincidan con una query en la base de datos y renderizarlos en la vista:
public function show() { return view('browse_movies', [ 'movies' => Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get() ]); }
Generar una vista
Ejecute el siguiente comando desde el directorio raíz de la aplicación para crear una vista que muestre datos de películas:
php artisan make:view browse_movies
Después de ejecutar el comando, se muestra el siguiente mensaje:
INFO View [resources/views/browse_movies.blade.php] created successfully.
Abra el archivo de vista browse_movies.blade.php en el directorio resources/views. Remplaza el contenido por el siguiente código y guarda los cambios:
<!DOCTYPE html> <html> <head> <title>Browse Movies</title> </head> <body> <h2>Movies</h2> @forelse ($movies as $movie) <p> Title: {{ $movie->title }}<br> Year: {{ $movie->year }}<br> Runtime: {{ $movie->runtime }}<br> IMDB Rating: {{ $movie->imdb['rating'] }}<br> IMDB Votes: {{ $movie->imdb['votes'] }}<br> Plot: {{ $movie->plot }}<br> </p> @empty <p>No results</p> @endforelse </body> </html>
Opcionalmente, vea sus resultados como documentos JSON
En lugar de generar una vista y editar el archivo browse_movies.blade.php, puedes usar el método toJson() para mostrar tus resultados en formato JSON.
Reemplaza la función show() con el siguiente código para recuperar los resultados y devolverlos como documentos JSON:
public function show() { $results = Movie::where('runtime', '<', 60) ->where('imdb.rating', '>', 8.5) ->orderBy('imdb.rating', 'desc') ->take(10) ->get(); return $results->toJson(); }
Empiece su aplicación Laravel
Ejecutá el siguiente comando desde el directorio raíz de la aplicación para iniciar tu servidor web integrado de PHP:
php artisan serve
Una vez que el servidor se inicia, emite el siguiente mensaje:
INFO Server running on [http://127.0.0.1:8000]. Press Ctrl+C to stop the server
Ver los datos de películas
Abre la URL http://:127.0.0.1 8000/browse_movies en tu navegador web. La página muestra una lista de películas y detalles sobre cada una de ellas.
Tip
Puedes ejecutar el comando php artisan route:list desde el directorio raíz de tu aplicación para ver una lista de las rutas disponibles.
Escribe datos en MongoDB
Agregar una ruta de API que llame a la función del controlador
Genera un archivo de ruta API ejecutando el siguiente comando:
php artisan install:api
Tip
Omitir este paso si usas Laravel 10.x porque el archivo que genera el comando ya existe.
Importa el controlador y añade una ruta de API que llame al método store() en el archivo routes/api.php:
use App\Http\Controllers\MovieController; // ... Route::resource('movies', MovieController::class)->only([ 'store' ]);
Actualiza los campos del modelo
Actualiza el modelo Movie en el directorio app/Models para especificar los campos que el método fill() rellena, como se muestra en el siguiente código:
class Movie extends Model { protected $connection = 'mongodb'; protected $fillable = ['title', 'year', 'runtime', 'imdb', 'plot']; }
Publicar una solicitud en la API
Crea un archivo llamado movie.json e introduce los siguientes datos:
{ "title": "The Laravel MongoDB Quick Start", "year": 2024, "runtime": 15, "imdb": { "rating": 9.5, "votes": 1 }, "plot": "This movie entry was created by running through the Laravel MongoDB Quick Start tutorial." }
Envía la carga útil JSON al endpoint como una solicitud POST ejecutando el siguiente comando en tu shell:
curl -H "Content-Type: application/json" \ --data @movie.json \ http://localhost:8000/api/movies
Ver los datos
Abra http://:127.0.0.1 8000/browse_movies en su navegador web para ver la información de la película que envió. La película insertada aparece en la parte superior de los resultados.
Próximos pasos
¡Felicidades por completar la guía de inicio!
Después de completar estos pasos, tendrás una aplicación web de Laravel que utiliza Laravel MongoDB para conectar a tu implementación de MongoDB, ejecutar una query en los datos de muestra y renderizar un resultado recuperado.
Puedes descargar el proyecto de la aplicación web clonando el laravel-quickstart repositorio de GitHub.
Tip
Tutorials
Aprende cómo implementar más funcionalidades CRUD en una aplicación Laravel MongoDB siguiendo el tutorial Crea un servicio back-end usando Laravel MongoDB.
Aprende a crear una aplicación full stack que use Laravel MongoDB siguiendo el tutorial Clon de Instagram full stack con Laravel y MongoDB en YouTube.
Más aprendizaje
Obtén más información sobre las funcionalidades de MongoDB de Laravel en los siguientes recursos:
Conectarse a MongoDB: aprenda a configurar su conexión a MongoDB.
Interactúe con los datos: aprenda a leer y guardar sus datos de MongoDB.
Modele sus datos: utilice clases de modelos Eloquent para trabajar con datos de MongoDB.
Query Builder: utiliza Query Builder para especificar consultas y agregaciones de MongoDB.
Nota
Si tiene problemas en esta página, envíe sus comentarios utilizando la pestaña Rate this page en el lado derecho o inferior derecho de esta página.
Puede encontrar soporte para preguntas generales mediante la etiqueta Stack Overflow de MongoDB o la comunidad de Reddit de MongoDB.
