登录
首页 >  Golang >  Go问答

如何构建和传递 bson 文档 - Go lang?

来源:Golang技术栈

时间:2023-04-30 05:56:38 373浏览 收藏

从现在开始,努力学习吧!本文《如何构建和传递 bson 文档 - Go lang?》主要讲解了golang等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我在我的项目中使用Go和 mongoDB,mgo 是连接到 connect MongoDB

我有以下文档,这是要插入到 MongoDB 中的

 {
     "_id" : ObjectId("53439d6b89e4d7ca240668e5"),
     "balanceamount" : 3,
     "type" : "reg",
     "authentication" : {
       "authmode" : "10",
       "authval" : "sd",
       "recovery" : {
          "mobile" : "sdfsd",
          "email" : "sds@gmail.com"
        }
      },
     "stamps" : {
        "in" : "x",
        "up" : "y"
     }
  }

我已经创建了上面的 BSON 文档。

我有两个包裹

  1. 帐户.go

  2. dbEngine.go

account.go 用于创建 BSON 文档并将 BSON 文档发送到 dbEngine.go

dbEngine.go 用于建立与 MongoDB 的连接并插入文档。同时将 BSON 文档传递给 dbEngine.go

dbEngine.Insert(bsonDocument);

在 dbEngine.go 我有方法

func Insert(document interface{}){
 //stuff
}

错误: 恐慌:无法将接口 {} 编组为 BSON 文档。

interface{} 是否不用于 BSON 文档。

我是新手Go。任何建议或帮助将不胜感激

正确答案

您不需要自己生成 BSON 文档。
假设在 account.go 中,您将拥有一个 account 结构:

type Account struct {
  Id bson.ObjectId `bson:"_id"` // import "labix.org/v2/mgo/bson"
  BalanceAmount int
  // Other field
}

然后在 dbEngine.go 中插入函数:

func Insert(document interface{}){
  session, err := mgo.Dial("localhost")
  // check error
  c := session.DB("db_name").C("collection_name")
  err := c.Insert(document)
}

然后,在您的应用程序中的某个位置:

acc := Account{}
acc.Id = bson.NewObjectId()
acc.BalanceAmount = 3

dbEngine.Insert(&acc);

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>