首先,我们需要在go中安装MongoDB的驱动包,使用命令go get go.mongodb.org/mongo-driver/mongo
进行安装。
接着,在代码中导入mongo driver的包,并建立与MongoDB的连接,示例代码如下:
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func establishConnection() (*mongo.Client, error) {
ctx := context.TODO()
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(ctx, clientOptions)
if err != nil {
return nil, err
}
err = client.Ping(ctx, nil)
if err != nil {
return nil, err
}
return client, nil
}
接下来,我们需要在MongoDB中创建一个数据库以及集合,示例代码如下:
func createCollection(client *mongo.Client) error {
ctx := context.TODO()
database := client.Database("testdb")
collOption := options.Collection().SetMaxAge(300)
collection := database.Collection("testcoll", collOption)
_, err := collection.Indexes().CreateMany(ctx, []mongo.IndexModel{
{
Keys: bson.M{
"name": 1,
},
Options: options.Index().SetUnique(true),
},
})
if err != nil {
return err
}
return nil
}
接下来,我们可以执行一些CURD操作,示例如下:
func insertDocument(client *mongo.Client) error {
ctx := context.TODO()
database := client.Database("testdb")
collection := database.Collection("testcoll")
doc := bson.M{
"name": "John",
"age": 30,
}
_, err := collection.InsertOne(ctx, doc)
if err != nil {
return err
}
return nil
}
func findDocuments(client *mongo.Client) ([]bson.M, error) {
ctx := context.TODO()
database := client.Database("testdb")
collection := database.Collection("testcoll")
var results []bson.M
cur, err := collection.Find(ctx, bson.M{})
if err != nil {
return results, err
}
defer cur.Close(ctx)
for cur.Next(ctx) {
var result bson.M
err := cur.Decode(&result)
if err != nil {
return results, err
}
results = append(results, result)
}
if err := cur.Err(); err != nil {
return results, err
}
return results, nil
}
以上示例代码演示了如何建立与MongoDB的连接、创建数据库集合以及如何进行CURD操作。