下面是“golang连接MongoDB数据库及数据库操作指南”的完整攻略,包括两条示例说明。
连接MongoDB数据库
安装Go官方MongoDB驱动
首先需要安装Go官方的mongo驱动包,使用以下命令:
go get go.mongodb.org/mongo-driver/mongo
建立MongoDB连接
在代码引入mongo-driver/mongo包后,可以通过以下代码建立MongoDB连接:
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
// 设置客户端连接配置
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!")
}
这段代码中,我们首先通过options.Client().ApplyURI()
方法设置了MongoDB服务器的地址和端口号(本地MongoDB服务默认使用27017端口),然后通过mongo.Connect()
方法建立到MongoDB的连接。为检查是否成功连接到MongoDB,我们调用了client.Ping()
方法,如果连接成功,将会输出Connected to MongoDB!
。
关闭MongoDB连接
在程序结束时间,需要通过以下代码关闭MongoDB连接:
func main() {
// 建立MongoDB连接
client, err := mongo.Connect(context.Background(), options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
log.Fatal(err)
}
// 关闭连接
err = client.Disconnect(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println("Connection to MongoDB closed.")
}
MongoDB数据库操作指南
插入文档
以下是一个简单的插入文档的示例,先假设一个Student结构体:
type Student struct {
Name string
Gender string
Age int
}
然后使用以下代码将其中一个Student对象插入到MongoDB的students集合中:
// 获取要插入的数据
student := Student{"小明", "male", 20}
// 选择要插入数据的集合
collection := client.Database("test_db").Collection("students")
// 向集合插入一个文档
res, err := collection.InsertOne(context.Background(), student)
if err != nil {
log.Fatal(err)
}
fmt.Println("Inserted document ID:", res.InsertedID)
查询文档
以下是一个简单的查询文档的示例,假设collection中包含多个Student对象:
// 选择要查询数据的集合
collection := client.Database("test_db").Collection("students")
// 定义查询条件
filter := bson.M{"name": "小明"}
// 执行查询
var result Student
err = collection.FindOne(context.Background(), filter).Decode(&result)
if err != nil {
log.Fatal(err)
}
fmt.Println("Student found: ", result)
在上面的代码中,使用bson.M{}定义查询条件,整个查询需要在Context.Background()的上下文中执行,然后将结果解码到result对象中。
更新文档
以下是一个简单的更新文档的示例:
// 选择要更新数据的集合
collection := client.Database("test_db").Collection("students")
// 定义查询条件
filter := bson.M{"name": "小明"}
// 定义更新内容
update := bson.M{"$set": bson.M{"age": 21}}
// 执行更新操作
res, err := collection.UpdateOne(context.Background(), filter, update)
if err != nil {
log.Fatal(err)
}
fmt.Println("Number of documents updated:", res.ModifiedCount)
在上面的代码中,我们使用bson.M{}对象定义了更新内容,将年龄字段从 20 更改为 21,使用UpdateOne()方法执行更新操作,返回结果将在res对象中。
删除文档
以下是一个简单的删除文档的示例:
// 选择要删除数据的集合
collection := client.Database("test_db").Collection("students")
// 定义查询条件
filter := bson.M{"name": "小明"}
// 执行删除操作
res, err := collection.DeleteOne(context.Background(), filter)
if err != nil {
log.Fatal(err)
}
fmt.Println("Number of documents deleted:", res.DeletedCount)
在上面的代码中,我们使用bson.M{}对象定义了查询条件,使用DeleteOne()方法执行删除操作,返回结果将在res对象中。
以上就是“golang连接MongoDB数据库及数据库操作指南”的完整攻略,包括建立连接、关闭连接、插入文档、查询文档、更新文档和删除文档的操作。