Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB

王林
王林asal
2023-07-29 20:07:531152semak imbas

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB

Pengenalan:
Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Oleh kerana prestasi konkurensi yang unggul dan perpustakaan standard yang kaya, ia menjadi semakin popular Semakin ramai pembangun memilih untuk menggunakannya untuk membangunkan pelbagai aplikasi. Semasa pembangunan aplikasi, interaksi dengan pangkalan data adalah keperluan yang sangat biasa. Artikel ini akan memperkenalkan cara menggunakan fungsi pangkalan data yang disediakan oleh bahasa Go dan menunjukkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB.

1. Persediaan
Sebelum bermula, kita perlu memasang pemacu MongoDB bahasa Go. Anda boleh menggunakan arahan berikut untuk memasang:

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

2. Sambung ke pangkalan data
Pertama, kita perlu menyambung ke pangkalan data MongoDB dalam kod. Gunakan contoh kod berikut untuk menyambung:

pakej utama

import (

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

"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

)

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!")

}

Dalam kod di atas, kami mula-mula menetapkan pilihan sambungan dan kemudian memanggil mongo.Connect ( ) berfungsi untuk menyambung ke pangkalan data. Kemudian gunakan client.Ping() untuk menyemak sama ada sambungan berjaya. Akhir sekali, kami menetapkan tamat masa dan menutup sambungan ke pangkalan data menggunakan fungsi klien.Putuskan sambungan().

3. Masukkan data
Seterusnya kita akan belajar cara memasukkan data ke dalam pangkalan data MongoDB. Gunakan contoh kod berikut untuk sisipan:

pakej utama

import (

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

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

)

taip Person struct {

Name  string
Email string

}

func main() {

rreee

}

dalam kod di atas, kita buat Struktur bernama Person dicipta, dan contoh struktur Person dibuat dalam fungsi main(). Kami kemudian memasukkan contoh ke dalam pangkalan data MongoDB melalui fungsi collection.InsertOne(). Selepas pemasukan berjaya, cetak ID dokumen yang dimasukkan.

4. Data pertanyaan

Seterusnya, kita akan belajar cara membuat pertanyaan data daripada pangkalan data MongoDB. Gunakan contoh kod berikut untuk operasi pertanyaan:

pakej utama

import (

// 连接到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!")

)

taip Person struct {

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

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

}

func main() {

rreee

}

dalam kod di atas

}

gunakan Fungsi collection.FindOne() menanyakan dokumen bernama "Zhang San". Keputusan pertanyaan dinyahkodkan ke dalam pembolehubah hasil dan dicetak.

5. Kemas kini data
Di bawah ini kita akan belajar cara mengemas kini data dalam pangkalan data MongoDB. Gunakan contoh kod berikut untuk operasi kemas kini:

pakej utama

import (

Name  string
Email string

)

taip Person struct {

// 连接到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!")

}

func main() {

rreee

}

dalam kod di atas kami menggunakan fungsi collection.UpdateOne() mengemas kini medan e-mel dokumen bernama "Zhang San". Selepas mengemas kini, cetak hasil kemas kini.

6. Padam data

Akhirnya, kita akan belajar cara memadam data daripada pangkalan data MongoDB. Gunakan contoh kod berikut untuk melaksanakan operasi pemadaman:

pakej utama

import (

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

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

)

taip Person struct {

Name  string
Email string

}

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!")

}kod di atas

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

"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

, kami menggunakan fungsi collection.DeleteOne() memadamkan dokumen bernama "Zhang San". Selepas pemadaman, cetak hasil pemadaman.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan fungsi pangkalan data dalam bahasa Go dan melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB. Dengan mempelajari artikel ini, kami dapat memahami dengan lebih baik gabungan bahasa Go dan MongoDB. Kami berharap ia dapat membantu pembaca apabila menggunakan bahasa Go untuk operasi pangkalan data.

Atas ialah kandungan terperinci Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data MongoDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn