golang操作mongodb

Posted 孙龙 程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang操作mongodb相关的知识,希望对你有一定的参考价值。

 

package main

import (
    "fmt"
    "go.mongodb.org/mongo-driver/mongo"
    "context"
    "go.mongodb.org/mongo-driver/mongo/options"
    "go.mongodb.org/mongo-driver/bson/primitive"
    "time"
)


// 任务的执行时间点
type TimePoint 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"`// 脚本输出
    TimePoint TimePoint `bson:"timePoint"`// 执行时间点
}

func main(){
    var (
        client *mongo.Client
        err error
        result *mongo.InsertOneResult
    )

    // 建立mongodb连接
    clientOptions := options.Client().ApplyURI("mongodb://ichunt:huntmon6699@192.168.1.237:27017/ichunt?authMechanism=SCRAM-SHA-1")
    if client, err = mongo.Connect(
        context.TODO(),clientOptions); err != nil {
        return
    }

    // 2, 选择数据库my_db
    database := client.Database("ichunt")

    // 3, 选择表my_collection
    collection := database.Collection("cron_log")
    // 4, 插入记录(bson)
    record := &LogRecord{
        JobName: "job10",
        Command: "echo hello",
        Err: "",
        Content: "hello",
        TimePoint: TimePoint{StartTime: time.Now().Unix(), EndTime: time.Now().Unix() + 10},
    }

    if result, err = collection.InsertOne(context.TODO(), record); err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(result)

    //// _id: 默认生成一个全局唯一ID, ObjectID:12字节的二进制
    docId := result.InsertedID.(primitive.ObjectID)
    fmt.Println("自增ID:", docId.Hex())
}

 

返回:

&{ObjectID("5e158ad09a14bfe14880829b")}
自增ID: 5e158ad09a14bfe14880829b

 

以上是关于golang操作mongodb的主要内容,如果未能解决你的问题,请参考以下文章

golang操作mongodb

Golang使用MongoDB通用操作

Golang操作MongoDB DAO - 增删改查

golang代码片段(摘抄)

代码片段 - Golang 实现简单的 Web 服务器

带有 mgo 的 Go (golang) 中的 MongoDB:如何更新记录、确定更新是不是成功并在单个原子操作中获取数据?