Introductie
MongoDB is een van de populairste NoSQL-documentgeoriënteerde databases. Kenmerkend zijn de hoge schrijfprestaties (ideaal voor analytics en IoT), hoge beschikbaarheid (automatische failover via replica sets), horizontale schaalbaarheid (sharding) en een krachtige querytaal (aggregaties, full-text search en geospatiale query’s). Anders dan het rij-kolomformaat van SQL-databases is elk record in MongoDB een document in BSON-formaat (binaire JSON). Je applicatie kan deze data ophalen in JSON-formaat.Als je MongoDB met Laravel gebruikt, raden we de
mongodb/laravel-mongodb-package aan, die officieel door MongoDB wordt onderhouden. Deze package biedt een rijke integratie met Eloquent en andere Laravel-features.Installatie
MongoDB PHP-driver
Om verbinding te maken met MongoDB heb je demongodb PHP-extensie nodig. Gebruik je Laravel Herd of php.new, dan is deze al geïnstalleerd. Handmatig installeren doe je met PECL:
De MongoDB-server starten
Voor lokale ontwikkeling kun je MongoDB Community Server gebruiken. Zie de officiële installatiegids voor installatie op Windows, macOS, Linux en Docker. Met Docker:De laravel-mongodb-package installeren
Installeer demongodb/laravel-mongodb-package met Composer:
Configuratie
Omgevingsvariabelen
Voeg de MongoDB-verbindingsgegevens toe aan je.env-bestand:
config/database.php
Voeg eenmongodb-verbinding toe aan de connections-array in config/database.php:
Belangrijkste features
Eloquent-models
Door te erven vanMongoDB\Laravel\Eloquent\Model werk je met MongoDB op vrijwel dezelfde manier als met een gewoon Eloquent-model.
MongoDB is schemaloos, dus migrations zijn niet nodig. Zodra je een document opslaat, wordt de collection automatisch aangemaakt.
Basis-CRUD-operaties
Je gebruikt dezelfde API als bij gewone Eloquent-models:Arrays en embedded documents
Arrays en embedded documents — de kracht van MongoDB — kun je direct gebruiken:Query builder
Met de query builder van MongoDB kun je complexe query’s schrijven. Zie de laravel-mongodb query builder-documentatie voor meer details.Cache-driver
De cache-driver van MongoDB gebruikt TTL-indexes om verlopen entries automatisch te verwijderen. Zie de cache-driver-documentatie voor meer details. Voeg een store toe inconfig/cache.php:
.env op MongoDB:
Queue-driver
Je kunt MongoDB gebruiken als queue-driver. Zie de queue-driver-documentatie voor meer details. Voeg een verbinding toe inconfig/queue.php:
.env op MongoDB:
Bestandsopslag met GridFS
Je kunt bestanden opslaan met GridFS van MongoDB. Hiervoor gebruik je de GridFS-adapter voor Flysystem. Zie de GridFS-documentatie voor meer details.config/filesystems.php:
Vector search
Met MongoDB Atlas Vector Search kun je op basis van vector-embeddings zoeken naar vergelijkbare documenten. Je slaat data zoals tekst, afbeeldingen en audio op als vectoren en haalt vervolgens de documenten op die het dichtst bij de queryvector liggen — een zoekfunctie gericht op AI en machine learning.Vector search is alleen beschikbaar op MongoDB Atlas. Het werkt niet met een lokale MongoDB Community Server of een self-hosted omgeving. Je moet vooraf een Vector Search-index aanmaken in de Atlas-console.
vectorSearch-methode is beschikbaar op de query builder:
Full-text search (Scout-engine)
Met demongodb Scout-engine kun je de full-text search van Laravel Scout gebruiken met MongoDB. Intern wordt MongoDB Atlas Search gebruikt, met ondersteuning voor fuzzy search en wildcard search. Zie de Scout-engine-documentatie voor meer details.
De MongoDB Scout-engine is eveneens alleen beschikbaar op MongoDB Atlas. De indexcollection van Scout moet een andere collection zijn dan die van het model. De
prefix-instelling in config/scout.php (standaard de appnaam) wordt automatisch toegepast..env op mongodb:
Searchable-trait toe aan je model:
Gecombineerd gebruik met MySQL
In Laravel kun je MySQL en MongoDB tegelijk gebruiken. Je geeft per model de verbinding op met de$connection-property.
Wil je relaties tussen MySQL-models en MongoDB-models, raadpleeg dan hybride relaties.
Samenvatting
Installatiechecklist
Installatiechecklist
- Installeer de PHP-extensie met
pecl install mongodb - Start de MongoDB-server (lokaal, via Docker of Atlas)
- Installeer de package met
composer require mongodb/laravel-mongodb - Stel
MONGODB_URIenMONGODB_DATABASEin in.env - Voeg de
mongodb-verbinding toe aanconfig/database.php
MongoDB versus MySQL: wanneer gebruik je wat
MongoDB versus MySQL: wanneer gebruik je wat
Welke feature configureer je waar
Welke feature configureer je waar
Volgende stappen
Officiële laravel-mongodb-documentatie
Gedetailleerde referentie voor alle features, waaronder Eloquent, de query builder en relaties
Quickstart
Leer snel de basis van MongoDB met Laravel
Databaseconfiguratie
De basis van databaseverbindingen configureren in Laravel
Introductie tot Eloquent
De basis van het Eloquent ORM