MongoDB With Laravel 9
This package allows Laravel applications to use MongoDB for CRUD operations. It also integrates with Eloquent, providing database-specific query builder functionality.
MongoDB provides a document-oriented data store with flexible schemas that can evolve as application requirements change. It also offers performance and scalability.
To get started, navigate to the MongoDB Atlas website and create a free account.
Features
Using MongoDB with Laravel provides a powerful combination of features for web applications. The PHP framework supports a robust ecosystem, a comprehensive ORM (Eloquent), and an expressive syntax for rapid application development. The MongoDB NoSQL database complements these capabilities with document-oriented data storage and advanced querying capabilities.
The database system also enables developers to create complex data processing pipelines through a mechanism known as aggregation pipelines. These pipelines are a sequence of declarative data processing operations that examine and transform documents from a selected collection, resulting in aggregated results. Each stage in a pipeline inspects and processes documents in the selected collection and feeds the transformed documents to the next stage in the pipeline.
MongoDB also enables developers to build flexible document schemas and scale databases horizontally through data replication. This scalability allows developers to reduce join-like operations, improve query performance, and increase capacity through sharding. This scalability is made possible by removing the dependency on tables, and supporting flexible document-based schemas.
Installation
MongoDB is a document-oriented database that stores data in JSON-like documents. It provides a flexible schema structure and can scale horizontally to handle large amounts of data. In addition, its powerful querying language makes it easier to build and execute complex queries.
The jenssegers/laravel-mongodb package integrates Laravel with MongoDB by using the MongoDB PHP extension and the MongoDB driver. The extension provides a low-level driver that allows PHP applications to communicate with a MongoDB server. The jenssegers/laravel-mongodb also provides a high-level abstraction that integrates Laravel with MongoDB.
In addition to integrating with the MongoDB database, the package supports the Eloquent ORM and basic CRUD functionality. It also enables you to use migration scripts with MongoDB, although you will need to replace the DB::table alias with DB::collection to take advantage of MongoDB’s naming conventions. The package also supports the aggregation functions available in the MongoDB query library. It also supports a number of other MongoDB-specific operations, such as whereNotIn and distinct.
Configuration
One of the key benefits of MongoDB is its scalability. It allows for horizontal distribution of data across multiple servers, which is essential for high-performance applications. It also supports advanced querying with a rich syntax and features. Laravel’s integration with MongoDB brings these capabilities to your application.
Laravel’s built-in cookie based authentication services and its headless authentication libraries, Passport and Sanctum support integrating with MongoDB to provide a full range of API token based authentication options for your SPA. Both of these libraries also provide a way to log out an authenticated user from other devices, if necessary.
To connect your Laravel app to a MongoDB database, you need to set the DB_URI environment variable in your.env file to point to your MongoDB cluster. You can then use the DB facade in your application to connect to your database. Unlike SQL, MongoDB databases allow you to define your schema and create collections with flexible names using the $collection protected property on models. This helps you avoid expensive database “join” operations.
Getting Started
The mongodb laravel package enables Laravel’s built-in authentication systems to be used with MongoDB. These include the Auth and Session facades, which implement cookie-based authentication for requests that are initiated from web browsers. This provides the ability for password confirmation to be provided via the web application and for users to be “logged out” from other devices when their password changes or is reset.
The jenssegers/laravel-mongodb package also supports integrating MongoDB with the Eloquent ORM. This means that migrations can be written as before, but the $table protected property of the model class is replaced with a $collection protected property to take advantage of MongoDB’s document-oriented data storage and flexible schema.
Authenticating against a MongoDB database with the Eloquent ORM is made easy thanks to the Auth and Session facades. In addition, the Laravel application starter kits Breeze and Jetstream both provide UI scaffolding for quickly incorporating this authentication into a new Laravel project.