一尘不染

如何构造并通过bson文件-Go语言?

go

我使用转到我的项目和MongoDB和
氧化镁是连接来连接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. account.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。任何建议或帮助将不胜感激


阅读 273

收藏
2020-07-02

共1个答案

一尘不染

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

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);
2020-07-02