Signatur
Beschreibung
Der MongoDB\Driver\Manager ist die Kernklasse des offiziellen MongoDB-PHP-Treibers (ext-mongodb). Er verwaltet den Verbindungspool zu einem MongoDB-Server, einem Replica-Set oder einem Sharded-Cluster und stellt sicher, dass Verbindungen effizient wieder verwendet werden.
Beim Erstellen einer Instanz werden die Verbindungsparameter (Host, Port, Authentifizierung, TLS usw.) über eine MongoDB-URI übergeben. Die eigentliche TCP-Verbindung wird lazy aufgebaut – also erst beim ersten Zugriff auf den Server. Der Manager ist so konzipiert, dass er als langlaufende Ressource (z. B. als Service in einer Dependency-Injection-Container) genutzt wird.
Über den Manager lassen sich MongoDB\Driver\Query-, MongoDB\Driver\Command-, MongoDB\Driver\BulkWrite- und Session-Operationen ausführen. Er wählt automatisch den passenden Server aus dem Cluster aus (z. B. Primary für Schreiboperationen, Secondary für Lesezugriffe je nach ReadPreference).
In modernen Projekten wird der Manager häufig indirekt über eine Bibliothek wie mongodb/mongodb (das High-Level-PHP-Paket) verwendet, die auf ext-mongodb aufbaut. Bei direkter Nutzung ist er ideal, wenn maximale Kontrolle über Treiber-Details benötigt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $uri | string | mongodb://127.0.0.1/ | Eine gültige MongoDB-Connection-URI, z. B. mongodb://user:pass@host:27017/dbname oder mongodb+srv://cluster.example.net/. |
| $uriOptions | array | [] | Assoziatives Array mit URI-Optionen wie replicaSet, authSource, tls, readPreference oder w (Write Concern). Diese Optionen überschreiben gleichnamige Parameter in der URI. |
| $driverOptions | array | [] | Assoziatives Array mit treiberspezifischen Optionen, z. B. typeMap (Standard-Typzuordnung für BSON-Deserialisierung) oder serverApi (ein MongoDB\Driver\ServerApi-Objekt für Stable-API-Versioning). |
Beispiele
Einfache Verbindung und Dokument abfragen
<?php
use MongoDB\Driver\Manager;
use MongoDB\Driver\Query;
$manager = new Manager('mongodb://127.0.0.1:27017');
$filter = ['status' => 'active'];
$options = ['limit' => 5, 'sort' => ['name' => 1]];
$query = new Query($filter, $options);
$cursor = $manager->executeQuery('mydb.users', $query);
foreach ($cursor as $document) {
echo $document->name . PHP_EOL;
}
Dokument einfügen mit BulkWrite
<?php
use MongoDB\Driver\Manager;
use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\WriteConcern;
$manager = new Manager(
'mongodb://admin:secret@mongo-host:27017/',
['authSource' => 'admin', 'tls' => true]
);
$bulk = new BulkWrite();
$bulk->insert([
'title' => 'PHP & MongoDB',
'published' => new MongoDB\BSON\UTCDateTime(),
'views' => 0,
]);
$writeConcern = new WriteConcern(WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('mydb.articles', $bulk, $writeConcern);
echo 'Eingefügte Dokumente: ' . $result->getInsertedCount();
Datenbankbefehl ausführen und Stable API nutzen
<?php
use MongoDB\Driver\Manager;
use MongoDB\Driver\Command;
use MongoDB\Driver\ServerApi;
$serverApi = new ServerApi(ServerApi::V1);
$manager = new Manager(
'mongodb+srv://cluster0.example.net/mydb',
[],
['serverApi' => $serverApi]
);
// Ping-Befehl senden
$command = new Command(['ping' => 1]);
$cursor = $manager->executeCommand('admin', $command);
$result = current($cursor->toArray());
echo 'Ping-Antwort: ' . $result->ok;
// Wichtig · Fallstricke
Sicherheitshinweise: Schreibe Zugangsdaten (Benutzername/Passwort) niemals hart in den Quellcode. Verwende Umgebungsvariablen oder ein Secret-Management-System, um die URI zu befüllen. Bei TLS-Verbindungen sollte das Serverzertifikat immer verifiziert werden (tlsInsecure auf false belassen).
Verbindungs-Pooling: Der Manager hält intern einen Verbindungspool. Innerhalb eines PHP-Prozesses (z. B. PHP-FPM Worker) sollte der Manager als Singleton verwendet werden, um unnötige Verbindungsaufbauten zu vermeiden.
Fehlerbehandlung: Verbindungsfehler werden als MongoDB\Driver\Exception\ConnectionException geworfen, Schreibfehler als MongoDB\Driver\Exception\BulkWriteException. Fange diese immer explizit ab.
Achtung: MongoDB\Driver\Manager ist Teil der Low-Level-Extension ext-mongodb. Für komfortablere CRUD-Methoden, GridFS und Aggregation wird das Composer-Paket mongodb/mongodb empfohlen, das intern denselben Manager verwendet.