使用GoLang操作MongoDB
获取包
go get go.mongodb.org/mongo-driver/mongo
go mod vendor
连接数据库
func main() {
var (
client *mongo.Client
err error
db *mongo.Database
collection *mongo.Collection
)
//1.建立连接
if client, err = mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017").SetConnectTimeout(5*time.Second)); err != nil {
fmt.Print(err)
return
}
//2.选择数据库 my_db
db = client.Database("my_db")
//3.选择表 my_collection
collection = db.Collection("my_collection")
collection = collection
}
将连接到mongoDB的函数抽出来
package util
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
var mgoCli *mongo.Client
func initEngine() {
var err error
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")
// 连接到MongoDB
mgoCli, err = mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
// 检查连接
err = mgoCli.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
}
func GetMgoCli() *mongo.Client {
if mgoCli == nil {
initEngine()
}
return mgoCli
}
package main
import (
"awesomeProject/mongodb/util"
"context"
"fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"time"
)
func main() {
var (
client = util.GetMgoCli()
db *mongo.Database
collection *mongo.Collection
)
//2.选择数据库 my_db
db = client.Database("my_db")
//选择表 my_collection
collection = db.Collection("my_collection")
collection = collection
}
插入一条数据
构建几个结构体
package model
type TimePorint struct {
StartTime int64 `bson:"startTime"` //开始时间
EndTime int64 `bson:"endTime"` //结束时间
}
type LogRecord struct {
JobName string `bson:"jobName"` //任务名
Command string `bson:"command"` //shell命令
Err string `bson:"err"` //脚本错误
Content string `bson:"content"` //脚本输出
Tp TimePorint //执行时间
}
main函数:
package main
import (
"awesomeProject/mongodb/model"
"awesomeProject/mongodb/util"
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
)
func main() {
var (
client = util.GetMgoCli()
err error
collection *mongo.Collection
lr *model.LogRecord
iResult *mongo.InsertOneResult
id primitive.ObjectID
)
//2.选择数据库 my_db里的某个表
collection = client.Database("my_db").Collection("my_collection")
//插入某一条数据
if iResult, err = collection.InsertOne(context.TODO(), lr); err != nil {
fmt.Print(err)
return
}
//_id:默认生成一个全局唯一ID
id = iResult.InsertedID.(primitive.ObjectID)
fmt.Println("自增ID", id.Hex())
}
去数据库中检验

批量插入数据
package main
import (
"awesomeProject/mongodb/model"
"awesomeProject/mongodb/util"
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"