MongoDB is one of the most popular NoSQL document-oriented database, used for its high write load (useful for analytics or IoT) and high availability (easy to set replica sets with automatic failover). It can also shard the database easily for horizontal scalability and has a powerful query language for doing aggregation, text search or geospatial queries.
Instead of storing data in tables of rows or columns like SQL databases, each record in a MongoDB database is a document described in BSON, a binary representation of the data. Applications can then retrieve this information in a JSON format. It supports a wide variety of data types, including documents, arrays, embedded documents, and binary data.
Before using MongoDB with Laravel, we recommend installing and using the mongodb/laravel-mongodb
package via Composer. The laravel-mongodb
package is officially maintained by MongoDB, and while MongoDB is natively supported by PHP through the MongoDB driver, the Laravel MongoDB package provides a richer integration with Eloquent and other Laravel features:
composer require mongodb/laravel-mongodb
To connect to a MongoDB database, the mongodb
PHP extension is required. If you are developing locally using Laravel Herd or installed PHP via php.new
, you already have this extension installed on your system. However, if you need to install the extension manually, you may do so via PECL:
pecl install mongodb
For more information on installing the MongoDB PHP extension, check out the MongoDB PHP extension installation instructions.
The MongoDB Community Server can be used to run MongoDB locally and is available for installation on Windows, macOS, Linux, or as a Docker container. To learn how to install MongoDB, please refer to the official MongoDB Community installation guide.
The connection string for the MongoDB server can be set in your .env
file:
MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"
For hosting MongoDB in the cloud, consider using MongoDB Atlas. To access a MongoDB Atlas cluster locally from your application, you will need to add your own IP address in the cluster's network settings to the project's IP Access List.
The connection string for MongoDB Atlas can also be set in your .env
file:
MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"
Finally, use Composer to install the Laravel MongoDB package:
composer require mongodb/laravel-mongodb
[!NOTE]
This installation of the package will fail if themongodb
PHP extension is not installed. The PHP configuration can differ between the CLI and the web server, so ensure the extension is enabled in both configurations.
You may configure your MongoDB connection via your application's config/database.php
configuration file. Within this file, add a mongodb
connection that utilizes the mongodb
driver:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
Once your configuration is complete, you can use the mongodb
package and database connection in your application to leverage a variety of powerful features:
mongodb
cache driver is optimized to use MongoDB features such as TTL indexes to automatically clear expired cache entries.mongodb
queue driver.To continue learning how to use MongoDB and Laravel, refer to MongoDB's Quick Start guide.
last update:2024-11-14 15:30