1、获取依赖:go get "go.mongodb.org/mongo-driver"
2、连接数据库
前提:确保mongo进程已启动:ps -ef|grep mongo
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
var db *mongo.Database // 数据库
var stuColl *mongo.Collection // 集合
func init() {
option := options.Client().ApplyURI("mongodb://localhost:27017")
client, err := mongo.Connect(context.TODO(), option)
if err != nil {
log.Fatal(err)
}
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
log.Print("connect mongo success")
db = client.Database("test")
stuColl = db.Collection("student")
}
这里我在当前包的init方法中完成数据库和集合的初始化,这样每次执行该包的方法都会先执行init()函数,保证了数据库和集合的连接。后面进行操作就直接调用全局变量即可。
3、构建文档对应实体类
import (
"go.mongodb.org/mongo-driver/bson/primitive"
)
type Student struct {
Id primitive.ObjectID `bson:"_id,omitempty"`
Name string
Age int
}
4、操作数据库
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"log"
)
// InsertOne 添加一条记录
func InsertOne(stu Student) {
one, err := stuColl.InsertOne(context.TODO(), stu)
if err != nil {
log.Fatal(err)
}
fmt.Println("insert one success :",one.InsertedID)
}
// InsertMany 添加多条记录
func InsertMany(stu []interface{
}) {
// InsertMany 所需的第二个参数是interface{}型切片
many