Ce tutoriel présente les opérations de base de MongoDB du point de vue du langage Golang.
Remarque : Ce tutoriel utilise le package pilote officiel de MongoDB pour le langage Go.
Tutoriels Prérequis
Remarque : Si vous n'êtes pas familier avec MongoDB, veuillez d'abord étudier les connaissances de MongoDB. Le tutoriel Golang ne répétera pas les connaissances pertinentes.
Exigences de base
- Go 1.10 ou supérieur
- MongoDB 2.6 ou supérieur
Installer les Dépendances
go get go.mongodb.org/mongo-driver/mongo
Se Connecter à MongoDB
import (
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
// Adresse de connexion MongoDB
uri := "mongodb://localhost:27017"
// Obtenez l'objet de contexte, vous pouvez définir une durée limite
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Se connecter à MongoDB
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
La fonction Connect ne bloque pas le goroutine. Autrement dit, opérer directement sur MongoDB après avoir appelé la méthode Connect peut entraîner une erreur car MongoDB n'a pas été connecté avec succès. Vous pouvez utiliser la méthode Ping pour vérifier si MongoDB s'est connecté avec succès.
// Pinger MongoDB, s'il s'est connecté avec succès, aucune erreur n'est renvoyée
err = client.Ping(ctx, readpref.Primary())
Adresse de Connexion MongoDB
L'adresse de connexion MongoDB inclut des informations importantes telles que l'adresse du serveur, le numéro de port, le compte et le mot de passe. Le format est le suivant :
mongodb://[nom_utilisateur:mot_de_passe@]hôte1[:port1][,...hôteN[:portN]][/[baseauthpardefaut][?options]]
Exemple :
// Se connecter à l'adresse localhost:27017 avec le nom d'utilisateur et le mot de passe par défaut
mongodb://localhost:27017
// Se connecter à l'adresse localhost:27017 avec le compte=root, mot de passe=123456, et se connecter à la base de données par défaut=admin
mongodb://root:123456@localhost:27017/admin
Libérer les Ressources de Connexion
Si la connexion n'est plus nécessaire, vous devez libérer manuellement les ressources de connexion.
defer func() {
if err = client.Disconnect(ctx); err != nil {
panic(err)
}
}()
Obtenir l'Instance de Collection
Pour opérer MongoDB en Golang, vous devez d'abord obtenir l'instance de collection, puis vous pourrez effectuer des opérations CRUD sur l'instance de collection.
// Définissez le nom de la base de données via Database, et définissez le nom de la collection via Collection
collection := client.Database("testing").Collection("numbers")
Remarque : Selon les caractéristiques de MongoDB, il n'est pas nécessaire de créer la base de données et la collection à l'avance. Elles seront créées automatiquement lors de la première écriture des données.
Insérer un document
Insérez des données en utilisant la fonction InsertOne.
// Objet contexte, couramment utilisé pour définir le délai de la requête, vous pouvez également réutiliser l'objet contexte créé précédemment, pas besoin de le redéfinir
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// Insérer le document, ici nous utilisons le type bson.D pour décrire le document JSON, bson.D représente un tableau JSON
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
// Obtenir l'identifiant du nouveau document ajouté
id := res.InsertedID
Vous devez importer les packages suivants:
import (
"context"
"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"
)
Remarque : En Golang, le package bson est utilisé pour représenter la structure de données du document JSON. Les chapitres suivants détailleront l'expression des structures de stockage de données MongoDB en Golang.
package main
import (
"context"
"fmt"
"time"
"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"
)
func main() {
// Définir l'adresse de connexion à MongoDB
uri := "mongodb://root:123456@localhost:27017/admin"
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Se connecter à MongoDB
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
// Libérer la connexion avec un délai
if err = client.Disconnect(ctx); err != nil {
panic(err)
}
}()
// Vérifier si la connexion à MongoDB a réussi
if err := client.Ping(ctx, readpref.Primary()); err != nil {
panic(err)
}
fmt.Println("Connexion à MongoDB réussie !")
// Obtenir la collection numbers
collection := client.Database("testing").Collection("numbers")
// Insérer un document
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
id := res.InsertedID
fmt.Println("Nouvel identifiant du document =", id)
}