以下是一个示例代码,演示如何在Go中将MongoDB查询结果赋值给Struct。
假设有一个名为"users"的MongoDB集合,里面存储了用户信息,例如姓名、年龄和电子邮件地址。我们可以创建一个结构体类型User,其中包含这三个字段:
type User struct {
Name string `bson:"name"`
Age int `bson:"age"`
Email string `bson:"email"`
}
然后,我们可以使用MongoDB Go驱动程序中的FindOne方法查询单个文档,并将结果解码到User结构体中:
// 创建MongoDB客户端
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.Background(), clientOptions)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(context.Background())
// 获取用户集合
userCollection := client.Database("test").Collection("users")
// 创建过滤器
filter := bson.M{"name": "Alice"}
// 执行查询并将结果解码到User结构体中
var user User
err = userCollection.FindOne(context.Background(), filter).Decode(&user)
if err != nil {
log.Fatal(err)
}
// 输出用户信息
fmt.Printf("Name: %s\nAge: %d\nEmail: %s\n", user.Name, user.Age, user.Email)
在这个例子中,我们查询了一个名为"Alice"的用户,并将结果解码到一个名为"user"的User结构体变量中。我们可以访问这个变量中的字段,并输出这个用户的姓名、年龄和电子邮件地址。
注意,在结构体中的每个字段上,我们使用了bson
标记来指定字段在MongoDB文档中的名称。这样,当我们通过MongoDB Go驱动程序查询文档并将结果解码到结构体中时,驱动程序可以正确地映射每个字段。