入门示例演示mongodb数据库的连接、查询、数据转换和关闭。mongodb和go开发环境配置的相关内容请参见以前博文。
Mongodb数据库
GO编码
test.go
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
type mongoUser struct {
Account string
Password string
}
func main() {
fmt.Println("start - only test")
// 客户端连接配置
clientOptions := options.Client().ApplyURI("mongodb://127.0.0.1:27017")
// MongoDB client
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
// 检查client连接
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connection is ok!")
// 获取数据集:mongodb数据库中已有数据
collection := client.Database("mytest").Collection("mycollection")
// 转换数据集为mongoUser数组
var results []*mongoUser
// 通过find创建游标
cur, err := collection.Find(context.TODO(), bson.D{{}})
for cur.Next(context.TODO()) {
// 解码:数据转换
var u mongoUser
err := cur.Decode(&u)
if err != nil {
log.Fatal(err)
}
results = append(results, &u)
}
// 关闭游标
cur.Close(context.TODO())
// 断开连接
err = client.Disconnect(context.TODO())
if err != nil {
log.Fatal(err)
}
fmt.Println("Connection is closed!")
// 输出结果集
var i int
arrLen := len(results)
for i = 0; i < arrLen; i++ {
tmp := results[i]
fmt.Println(i, tmp.Account, tmp.Password)
}
}