MongoDB - Verbinden
In diesem Tutorial besprechen wir die verschiedenen Möglichkeiten, eine Verbindung zu MongoDB herzustellen.
MongoDB-Dienst starten
In den vorherigen Tutorials haben wir besprochen,wie man den MongoDB-Dienst startet, Sie müssen nur den folgenden Befehl im bin-Verzeichnis des MongoDB-Installationsverzeichnisses ausführenmongodbund das war's.
Nach dem Start gibt MongoDB einige notwendige Informationen aus, danach erfolgt keine Ausgabe mehr; anschließend wartet es darauf, dass Verbindungen hergestellt werden. Sobald eine Verbindung hergestellt ist, beginnt es mit der Ausgabe von Log-Informationen.
Sie könnenMongoDB-Shellverwenden, um eine Verbindung zum MongoDB-Server herzustellen. Sie können auch PHP verwenden, um eine Verbindung zu MongoDB herzustellen. In diesem Tutorial verwenden wir die MongoDB-Shell, um eine Verbindung zum MongoDB-Dienst herzustellen, und in späteren Kapiteln führen wir ein, wie man über PHP, Python und Node.js eine Verbindung zu MongoDB-Diensten herstellt.
Standard-URI-Verbindungssyntax:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
mongodb://: Protokoll-Header, gibt die Verwendung von MongoDB an.[username:password@]: (optional) Authentifizierungsinformationen, einschließlich Benutzername und Passwort.host1[:port1][,...hostN[:portN]]: Serveradresse und Port; dabei kann es sich um die Adresse und den Port eines oder mehrerer MongoDB-Server handeln./[defaultauthdb]: (optional) Standard-Authentifizierungsdatenbank.[?options]: (optional) Verbindungsoptionen.
Das Standardverbindungsformat enthält mehrere Optionen, wie unten gezeigt:
authSource: gibt die Authentifizierungsdatenbank an.replicaSet: gibt den Namen des Replica-Sets an.ssl: aktiviert SSL-Verbindung (true oder false).readPreference: gibt die Lesepräferenz an, wie z. B.primary,primaryPreferred,secondary,secondaryPreferred,nearest。connectTimeoutMS: gibt den Verbindungs-Timeout (Millisekunden) an.socketTimeoutMS: gibt den Socket-Timeout (Millisekunden) an.
Mit einer lokalen MongoDB-Instanz verbinden (Standardport 27017):
mongodb://localhost
Mit einer lokalen MongoDB-Instanz verbinden:
mongodb://localhost/mydatabase
Mit einer lokalen MongoDB-Instanz über Benutzername und Passwort verbinden:
mongodb://username:password@localhost/mydatabase
Mit einer entfernten MongoDB-Instanz verbinden:
mongodb://remotehost:27017
Verbindung zu einem Replica-Set herstellen:
mongodb://host1:27017,host2:27017,host3:27017/mydatabase?replicaSet=myReplicaSet
Verbindung zu MongoDB über SSL herstellen:
mongodb://username:password@localhost:27017/mydatabase?ssl=true
Verbindung mit mehreren Optionen herstellen:
mongodb://username:password@localhost:27017/mydatabase?authSource=admin&ssl=true
Python (PyMongo)
Beispiel
client = MongoClient('mongodb://user:password@localhost:27017/mydatabase?authSource=admin')
db = client['mydatabase']
Node.js (Mongoose)
Beispiel
mongoose.connect('mongodb://user:password@localhost:27017/mydatabase?authSource=admin', {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'Verbindungsfehler:'));
db.once('open', function() {
console.log('Mit MongoDB verbunden');
});
PHP (Mongoose)
Beispiel
require 'vendor/autoload.php'; // Composer-Autoload-Datei einbinden
$client = new MongoDB\Client("mongodb://localhost:27017"); // Mit lokaler MongoDB-Instanz verbinden
$database = $client->selectDatabase('mydatabase'); // Datenbank auswählen
$collection = $database->selectCollection('mycollection'); // Sammlung auswählen
// Dokument einfügen
$result = $collection->insertOne(['name' => 'Alice', 'age' => 30]);
echo "Eingefügt mit Objekt-ID '{$result->getInsertedId()}'";
// Dokument abfragen
$document = $collection->findOne(['name' => 'Alice']);
echo "Gefundenes Dokument: " . json_encode($document);
?>
Java
Beispiel
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
public class MongoDBConnection {
public static void main(String[] args) {
String uri = "mongodb://user:password@localhost:27017/mydatabase?authSource=admin";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
System.out.println("Mit MongoDB verbunden");
}
}
}
Beispiel
Verbinden Sie sich mit dem MongoDB-Dienst über den Standardport.
mongodb://localhost
Verbinden Sie sich über die Shell mit dem MongoDB-Dienst:
./mongosh Current Mongosh Log ID: 66792d6b87657ebec9ed70f1 Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.9 Using MongoDB: 7.0.11 Using Mongosh: 2.2.9
Gehen Sie jetzt zurück und sehen Sie sich das Fenster an, in dem Sie den Befehl./mongodausgeführt haben, und Sie können sehen, von wo aus es eine Verbindung zum MongoDB-Server hergestellt hat. Sie können die folgenden Informationen sehen:
……省略信息……
2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] allocator: tcmalloc
2015-09-25T17:22:27.336+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/data/db" } }
2015-09-25T17:22:27.350+0800 I NETWORK [initandlisten] waiting for connections on port 27017
2015-09-25T17:22:36.012+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open) # 该行表明一个来自本机的连接
……省略信息……
Format des MongoDB-Verbindungsbefehls
Um eine Verbindung zum MongoDB-Server mit einem Benutzernamen und einem Passwort herzustellen, müssen Sie das Format 'username:password@hostname/dbname' verwenden, 'username' ist der Benutzername, 'password' ist das Passwort.
Verwenden Sie Benutzername und Passwort, um eine Verbindung zur Standarddatenbank herzustellen und sich anzumelden:
$ ./mongosh MongoDB shell version: 4.0.9 connecting to: test
Stellen Sie eine Verbindung zum lokalen MongoDB-Dienst her, indem Sie den Benutzer admin mit dem Passwort 123456 verwenden. Das Ausgabeergebnis sieht wie folgt aus:
> mongodb://admin:123456@localhost/ ...
Verwenden Sie Benutzername und Passwort, um eine Verbindung zu einer bestimmten Datenbank herzustellen und sich anzumelden; das Format ist wie folgt:
mongodb://admin:123456@localhost/test
Weitere Verbindungsbeispiele
Stellen Sie eine Verbindung zum lokalen Datenbankserver her; der Port ist der Standardport.
mongodb://localhost
Melden Sie sich bei der admin-Datenbank auf localhost mit dem Benutzernamen fred und dem Passwort foobar an.
mongodb://fred:foobar@localhost
Melden Sie sich bei der baz-Datenbank auf localhost mit dem Benutzernamen fred und dem Passwort foobar an.
mongodb://fred:foobar@localhost/baz
Stellen Sie eine Verbindung zu einem Replica-Paar her, Server 1 ist example1.com, Server 2 ist example2.
mongodb://example1.com:27017,example2.com:27017
Stellen Sie eine Verbindung zu einem Replica-Set mit drei Servern her (Ports 27017, 27018 und 27019):
mongodb://localhost,localhost:27018,localhost:27019
Stellen Sie eine Verbindung zu einem Replica-Set mit drei Servern her; Schreiboperationen werden auf dem primären Server ausgeführt und Leseoperationen werden auf die sekundären Server verteilt.
mongodb://host1,host2,host3/?slaveOk=true
Verbinden Sie sich direkt mit dem ersten Server, egal ob er Teil eines Replica-Sets, der primäre Server oder ein sekundärer Server ist.
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
Wenn Ihre Verbindungsserver Priorität haben und Sie außerdem alle Server auflisten müssen, können Sie die oben beschriebene Verbindungsmethode verwenden.
Stellen Sie im Safe-Modus eine Verbindung zu localhost her:
mongodb://localhost/?safe=true
Stellen Sie im Safe-Modus eine Verbindung zum Replica-Set her und warten Sie darauf, dass mindestens zwei Replica-Server erfolgreich schreiben, mit einem Timeout von 2 Sekunden.
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000Weitere Erweiterungen