mongo go 查询指定字段_使用go连接MongoDB完成CURD操作

使用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())
}

去数据库中检验

79d4b8544556d16c87ef05a98a605261.png

批量插入数据

package main

import (
    "awesomeProject/mongodb/model"
    "awesomeProject/mongodb/util"
    "context"
    "fmt"
    "go.mongodb.org/mongo-driver/bson/primitive"
    "go.mongodb.org/mongo-driver/mongo"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值