Maison > développement back-end > Golang > le corps du texte

Apprenez les fonctions de base de données en langage Go et implémentez les opérations d'ajout, de suppression, de modification et de requête des données MongoDB.

王林
Libérer: 2023-07-29 20:07:53
original
1208 Les gens l'ont consulté

Apprenez les fonctions de base de données en langage Go et implémentez les opérations d'ajout, de suppression, de modification et de requête des données MongoDB

Introduction :
Le langage Go est un langage de programmation efficace, concis et facile à apprendre en raison de ses performances de concurrence supérieures et. riche bibliothèque standard, elle devient de plus en plus populaire. De plus en plus de développeurs choisissent de l'utiliser pour développer diverses applications. Lors du développement d’applications, l’interaction avec la base de données est une exigence très courante. Cet article expliquera comment utiliser les fonctions de base de données fournies par le langage Go et montrera comment implémenter les opérations d'ajout, de suppression, de modification et de requête des données MongoDB.

1. Préparation
Avant de commencer, nous devons installer le pilote MongoDB du langage Go. Vous pouvez utiliser la commande suivante pour installer :

go get go.mongodb.org/mongo-driver/mongo

2. Connectez-vous à la base de données
Tout d'abord, nous devons nous connecter à la base de données MongoDB dans le code. Utilisez l'exemple de code suivant pour vous connecter :

package main

import (

"context"
"fmt"
"log"
"time"

"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
Copier après la connexion

)

func main() {

// 设置mongo连接选项
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")

// 连接到MongoDB
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    log.Fatal(err)
}

// 检查连接
err = client.Ping(context.Background(), nil)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")

// 设置超时时间
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

// 关闭连接
err = client.Disconnect(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Disconnected from MongoDB!")
Copier après la connexion

}

Dans le code ci-dessus, nous définissons d'abord les options de connexion, puis appelons mongo.Connect ( ) fonction pour se connecter à la base de données. Utilisez ensuite client.Ping() pour vérifier si la connexion réussit. Enfin, nous définissons le délai d'attente et fermons la connexion à la base de données à l'aide de la fonction client.Disconnect().

3. Insérer des données
Nous apprendrons ensuite comment insérer des données dans la base de données MongoDB. Utilisez l'exemple de code suivant pour l'insertion :

package main

import (

"context"
"fmt"
"log"
"time"

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

)

type Person struct {

Name  string
Email string
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

}

func main() {

// 连接到MongoDB
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    log.Fatal(err)
}

// 检查连接
err = client.Ping(context.Background(), nil)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")

// 获取集合
collection := client.Database("test").Collection("people")

// 创建一个Person结构体实例
person := Person{Name: "张三", Email: "zhangsan@example.com"}

// 插入一条文档
insertResult, err := collection.InsertOne(context.Background(), person)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Inserted a single document: ", insertResult.InsertedID)

// 设置超时时间
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

// 关闭连接
err = client.Disconnect(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Disconnected from MongoDB!")
Copier après la connexion

}

Dans le code ci-dessus, nous créons Une structure nommée Person est créée et une instance de structure Person est créée dans la fonction main(). Nous insérons ensuite l'instance dans la base de données MongoDB via la fonction collection.InsertOne(). Une fois l'insertion réussie, imprimez l'ID du document inséré.

4. Interroger des données
Ensuite, nous apprendrons comment interroger les données de la base de données MongoDB. Utilisez l'exemple de code suivant pour les opérations de requête :

package main

import (

"context"
"fmt"
"log"
"time"

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

)

type Person struct {

Name  string
Email string
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

}

func main() {

// 连接到MongoDB
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    log.Fatal(err)
}

// 检查连接
err = client.Ping(context.Background(), nil)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")

// 获取集合
collection := client.Database("test").Collection("people")

// 查询一条文档
var result Person
filter := bson.D{{"name", "张三"}}
err = collection.FindOne(context.Background(), filter).Decode(&result)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Found a single document: ", result)

// 设置超时时间
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

// 关闭连接
err = client.Disconnect(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Disconnected from MongoDB!")
Copier après la connexion

}

Dans le code ci-dessus, nous use La fonction collection.FindOne() interroge un document nommé "Zhang San". Les résultats de la requête sont décodés dans la variable de résultat et imprimés.

5. Mettre à jour les données
Ci-dessous, nous apprendrons comment mettre à jour les données dans la base de données MongoDB. Utilisez l'exemple de code suivant pour l'opération de mise à jour :

package main

import (

"context"
"fmt"
"log"
"time"

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

)

type Person struct {

Name  string
Email string
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

}

func main() {

// 连接到MongoDB
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    log.Fatal(err)
}

// 检查连接
err = client.Ping(context.Background(), nil)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")

// 获取集合
collection := client.Database("test").Collection("people")

// 设置更新条件
filter := bson.D{{"name", "张三"}}

// 设置更新内容
update := bson.D{
    {"$set", bson.D{
        {"email", "zhangsan@example.com"},
    }},
}

// 更新一条文档
updateResult, err := collection.UpdateOne(context.Background(), filter, update)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Updated a single document: ", updateResult)

// 设置超时时间
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

// 关闭连接
err = client.Disconnect(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Disconnected from MongoDB!")
Copier après la connexion

}

Dans le code ci-dessus, nous utilisons La fonction collection.UpdateOne() met à jour le champ email d'un document nommé "Zhang San". Après la mise à jour, imprimez les résultats de la mise à jour.

6. Supprimer des données
Enfin, nous apprendrons comment supprimer des données de la base de données MongoDB. Utilisez l'exemple de code suivant pour effectuer l'opération de suppression :

package main

import (

"context"
"fmt"
"log"
"time"

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

)

type Person struct {

Name  string
Email string
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

}

func main() {

// 连接到MongoDB
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
    log.Fatal(err)
}

// 检查连接
err = client.Ping(context.Background(), nil)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")

// 获取集合
collection := client.Database("test").Collection("people")

// 设置删除条件
filter := bson.D{{"name", "张三"}}

// 删除一条文档
deleteResult, err := collection.DeleteOne(context.Background(), filter)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Deleted a single document: ", deleteResult)

// 设置超时时间
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()

// 关闭连接
err = client.Disconnect(ctx)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Disconnected from MongoDB!")
Copier après la connexion

}

Dans le code ci-dessus , nous utilisons La fonction collection.DeleteOne() supprime un document nommé "Zhang San". Après la suppression, imprimez les résultats de la suppression.

Résumé :
Cet article présente comment utiliser les fonctions de base de données en langage Go et implémente les opérations d'ajout, de suppression, de modification et de requête des données MongoDB. En étudiant cet article, nous pouvons mieux comprendre la combinaison du langage Go et de MongoDB. Nous espérons qu'il sera utile aux lecteurs lors de l'utilisation du langage Go pour les opérations de base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal