Einführung
MongoDB ist eine der beliebtesten NoSQL-Dokumentendatenbanken. Sie zeichnet sich durch hohe Schreibleistung (ideal für Analytics und IoT), hohe Verfügbarkeit (automatisches Failover per Replica Set), horizontale Skalierung (Sharding) und eine leistungsstarke Query-Sprache (Aggregation, Volltextsuche, Geo-Abfragen) aus. Anders als das Zeilen-/Spalten-Modell in SQL-Datenbanken ist jeder Datensatz in MongoDB ein Dokument im BSON-Format (binäres JSON). Die Anwendung kann diese Daten im JSON-Format lesen.Für den Einsatz von MongoDB mit Laravel empfehlen wir das offizielle, von MongoDB gepflegte Paket
mongodb/laravel-mongodb. Es bietet eine umfassende Integration mit Eloquent und weiteren Laravel-Funktionen.Installation
MongoDB PHP-Treiber
Um sich mit MongoDB zu verbinden, benötigen Sie die PHP-Erweiterungmongodb. Bei Nutzung von Laravel Herd oder php.new ist sie bereits installiert. Für die manuelle Installation verwenden Sie PECL.
MongoDB-Server starten
Für die lokale Entwicklung eignet sich der MongoDB Community Server. Installationshinweise für Windows, macOS, Linux und Docker finden Sie im offiziellen Installationshandbuch. Mit Docker:Das Paket laravel-mongodb installieren
Installieren Sie das Paketmongodb/laravel-mongodb mit Composer.
Konfiguration
Umgebungsvariablen
Ergänzen Sie in der.env-Datei die Verbindungsdaten für MongoDB.
config/database.php
Fügen Sie im Arrayconnections in config/database.php eine mongodb-Verbindung hinzu.
Kernfunktionen
Eloquent-Modelle
Indem Sie vonMongoDB\Laravel\Eloquent\Model erben, können Sie MongoDB nahezu genauso bedienen wie normale Eloquent-Modelle.
Da MongoDB schemalos ist, sind keine Migrationen nötig. Beim Speichern eines Dokuments wird die Collection automatisch angelegt.
Grundlegende CRUD-Operationen
Sie verwenden dieselbe API wie beim normalen Eloquent.Arrays und eingebettete Dokumente
Sie können Arrays und eingebettete Dokumente – eine Stärke von MongoDB – direkt verwenden.Query Builder
Mit dem Query Builder von MongoDB lassen sich komplexe Abfragen formulieren. Details finden Sie in der Query-Builder-Dokumentation von laravel-mongodb.Cache-Treiber
Der MongoDB-Cache-Treiber nutzt TTL-Indizes und entfernt abgelaufene Einträge automatisch. Siehe die Cache-Treiber-Dokumentation für Details. Fügen Sie inconfig/cache.php einen Store hinzu.
.env den Cache-Treiber auf MongoDB.
Queue-Treiber
Sie können MongoDB als Queue-Treiber verwenden. Details finden Sie in der Queue-Treiber-Dokumentation. Fügen Sie inconfig/queue.php die Verbindung hinzu.
.env auf MongoDB.
Dateispeicherung mit GridFS
Mit GridFS von MongoDB können Sie Dateien speichern. Verwendet wird der GridFS-Adapter für Flysystem. Details siehe GridFS-Dokumentation.config/filesystems.php einen Disk hinzu.
Vektorsuche (Vector Search)
Mit MongoDB Atlas Vector Search können Sie Ähnlichkeitssuchen über Vektor-Embeddings durchführen. Sie speichern zum Beispiel Text-, Bild- oder Audio-Daten als Vektoren und finden die dem Query-Vektor am nächsten liegenden Dokumente – ein Suchfeature für KI und Machine Learning.Die Vektorsuche ist ausschließlich auf MongoDB Atlas verfügbar. In einem lokalen MongoDB Community Server oder in selbst gehosteten Umgebungen lässt sie sich nicht verwenden. Sie müssen vorab in der Atlas-Konsole einen Vector-Search-Index anlegen.
vectorSearch steht am Query Builder zur Verfügung.
Volltextsuche (Scout-Engine)
Mit der Scout-Enginemongodb können Sie die Volltextsuche von Laravel Scout mit MongoDB nutzen. Intern wird MongoDB Atlas Search verwendet – inklusive Unterstützung für Fuzzy- und Wildcard-Suche. Details finden Sie in der Scout-Engine-Dokumentation.
Auch die MongoDB-Scout-Engine ist nur auf MongoDB Atlas verfügbar. Die Scout-Index-Collection muss eine andere Collection sein als die des Modells. Die Einstellung
prefix in config/scout.php (standardmäßig der App-Name) wird automatisch angewendet..env auf mongodb.
Searchable hinzu.
Zusammen mit MySQL nutzen
In Laravel können MySQL und MongoDB parallel verwendet werden. Pro Modell geben Sie die Verbindung über die Eigenschaft$connection an.
Wenn Sie Beziehungen zwischen MySQL- und MongoDB-Modellen abbilden möchten, siehe Hybride Beziehungen.
Zusammenfassung
Installations-Checkliste
Installations-Checkliste
- PHP-Erweiterung mit
pecl install mongodbinstallieren - MongoDB-Server starten (lokal, per Docker oder Atlas)
- Paket mit
composer require mongodb/laravel-mongodbinstallieren MONGODB_URIundMONGODB_DATABASEin der.envsetzenmongodb-Verbindung inconfig/database.phphinzufügen
MongoDB vs. MySQL
MongoDB vs. MySQL
| Merkmal | MongoDB | MySQL |
|---|---|---|
| Datenmodell | Dokumente (JSON/BSON) | Tabellen (Zeilen/Spalten) |
| Schema | Schemalos (flexibel) | Festes Schema |
| Skalierung | Horizontale Skalierung einfach | Meist vertikale Skalierung |
| Transaktionen | Multi-Document (ab v4) | Vollständig ACID |
| Typische Anwendung | Logs, Analytics, IoT, flexible Datenstrukturen | Strukturierte Daten, komplexe Beziehungen |
Funktionsübersicht
Funktionsübersicht
| Funktion | Konfigurationsort |
|---|---|
| Eloquent-Modelle | MongoDB\Laravel\Eloquent\Model erweitern |
| Query Builder | DB::connection('mongodb')->collection(...) |
| Cache | config/cache.php + CACHE_STORE=mongodb |
| Queue | config/queue.php + QUEUE_CONNECTION=mongodb |
| Dateispeicher | config/filesystems.php + GridFS-Adapter |
| Vektorsuche | Model::query()->vectorSearch(...) (Atlas erforderlich) |
| Volltextsuche | SCOUT_DRIVER=mongodb + Searchable-Trait (Atlas erforderlich) |
Nächste Schritte
Offizielle Dokumentation von laravel-mongodb
Vollständige Referenz zu Eloquent, Query Builder, Beziehungen und mehr
Schnellstart
Die Grundlagen von MongoDB mit Laravel schnell lernen
Datenbank-Konfiguration
Grundlagen zur Konfiguration von Datenbankverbindungen in Laravel
Einführung in Eloquent
Grundlegende Nutzung des Eloquent ORM