BSON(Binary JSON)是一種二進制表示的JSON-like格式,用于存儲和交換數據。在Go語言中,我們可以使用go.mongodb.org/mongo-driver/bson
包來解析BSON格式。以下是一個簡單的示例,展示了如何使用Go解析BSON數據:
go get go.mongodb.org/mongo-driver/bson
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
type Person struct {
Name string `bson:"name"`
Age int `bson:"age"`
Email string `bson:"email"`
}
func main() {
// 設置客戶端選項
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
// 連接到MongoDB
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(context.TODO())
// 選擇數據庫和集合
collection := client.Database("testdb").Collection("people")
// 插入一個BSON對象
insertResult, err := collection.InsertOne(context.TODO(), Person{
Name: "John Doe",
Age: 30,
Email: "john.doe@example.com",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Inserted document with ID: %v\n", insertResult.InsertedID)
// 查詢BSON對象
var result Person
err = collection.FindOne(context.TODO(), bson.M{"name": "John Doe"}).Decode(&result)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Found person: %+v\n", result)
}
在這個示例中,我們定義了一個Person
結構體,用于表示BSON數據。然后,我們連接到MongoDB數據庫,插入一個包含Person
數據的BSON對象,并使用FindOne
方法查詢該對象。最后,我們使用Decode
方法將查詢結果解碼到Person
結構體中。
注意,我們使用了bson.M
來表示查詢條件,這是一個簡化的BSON對象。在實際應用中,你可能需要使用更復雜的BSON對象來表示查詢條件。