Diese Anleitung führt in die grundlegenden Operationen von MongoDB aus der Perspektive der Golang-Sprache ein.
Hinweis: Diese Anleitung verwendet das offizielle Go-Sprachtreiber-Paket, das von MongoDB bereitgestellt wird.
Voraussetzungen
Hinweis: Wenn Sie mit MongoDB nicht vertraut sind, sollten Sie zuerst das Wissen über MongoDB studieren. Das Golang-Tutorial wird nicht auf das relevante Wissen eingehen.
Grundanforderungen
- Go 1.10 oder höher
- MongoDB 2.6 oder höher
Abhängigkeiten installieren
go get go.mongodb.org/mongo-driver/mongo
Mit MongoDB verbinden
import (
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
// MongoDB-Verbindungsadresse
uri := "mongodb://localhost:27017"
// Holen Sie das Kontextobjekt, Sie können ein Timeout setzen
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Mit MongoDB verbinden
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
Die Connect-Funktion blockiert nicht die Goroutine. Das bedeutet, dass das direkte Bedienen von MongoDB nach dem Aufrufen der Connect-Methode zu einem Fehler führen kann, da MongoDB noch nicht erfolgreich verbunden ist. Sie können die Ping-Methode verwenden, um zu überprüfen, ob die Verbindung erfolgreich hergestellt wurde.
// Ping an MongoDB, bei erfolgreicher Verbindung wird kein Fehler zurückgegeben
err = client.Ping(ctx, readpref.Primary())
MongoDB-Verbindungsadresse
Die MongoDB-Verbindungsadresse enthält wichtige Informationen wie die Serveradresse, die Portnummer, das Benutzerkonto und das Passwort. Das Format ist wie folgt:
mongodb://[Benutzername:Passwort@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?Optionen]]
Beispiel:
// Verbindung zur Adresse localhost:27017 mit dem Standardbenutzernamen und Passwort herstellen
mongodb://localhost:27017
// Verbindung zur Adresse localhost:27017 mit dem Benutzerkonto=root, Passwort=123456 und Verbindung zur Standarddatenbank=admin
mongodb://root:123456@localhost:27017/admin
Verbindungsressourcen freigeben
Wenn die Verbindung nicht mehr benötigt wird, müssen Sie die Verbindungsressourcen manuell freigeben.
defer func() {
if err = client.Disconnect(ctx); err != nil {
panic(err)
}
}()
Collection-Instanz abrufen
Um MongoDB in Golang zu bedienen, müssen Sie zuerst die Collection-Instanz erhalten, und dann können Sie CRUD-Operationen auf der Collection-Instanz durchführen.
// Setzen Sie den Datenbanknamen über Database und den Sammlungsnamen über Collection
collection := client.Database("testing").Collection("numbers")
Hinweis: Gemäß den Eigenschaften von MongoDB ist es nicht notwendig, die Datenbank und die Sammlung im Voraus zu erstellen. Sie werden automatisch beim ersten Schreiben von Daten erstellt.
Dokument einfügen
Fügen Sie Daten mithilfe der InsertOne-Funktion ein.
// Kontextobjekt, das üblicherweise zur Festlegung des Anfragezeitlimits verwendet wird. Sie können auch das zuvor erstellte Kontextobjekt wiederverwenden, ohne es erneut definieren zu müssen
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// Dokument einfügen, hier verwenden wir den Typ bson.D, um das JSON-Dokument zu beschreiben. bson.D stellt ein JSON-Array dar
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
// Die ID des neu hinzugefügten Dokuments erhalten
id := res.InsertedID
Importieren Sie die folgenden Pakete:
import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
Hinweis: In Golang wird das bson-Paket verwendet, um die Datenstruktur des JSON-Dokuments darzustellen. In den folgenden Kapiteln wird die Darstellung von MongoDB-Datenstrukturen in Golang im Detail erläutert.