/ / Como construir e passar um documento bson - Go lang? - mongodb, vá

Como construir e passar o documento bson - Go lang? - mongodb, vá

estou usando Ir e mongoDB em meu projeto e mgo é conectar para conectar MongoDB.

Estou tendo o seguinte documento para ser inserido no 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"
}
}

Eu criei o documento BSON como acima.

Eu tenho dois pacotes

  1. account.go

  2. dbEngine.go

account.go é usado para criar o documento BSON e enviar o documento BSON para dbEngine.go

dbEngine.go é usado para estabelecer conexão com o MongoDB e inserir o documento. ao passar o documento BSON para dbEngine.go

dbEngine.Insert (bsonDocument);

Em dbEngine.go, estou tendo um método

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

Erro: pânico: Não é possível empacotar a interface {} como um documento BSON.

Se a interface {} não deve ser usada para o documento BSON.

Eu sou novo em Go. Qualquer sugestão ou ajuda será grata

Respostas:

1 para resposta № 1

Você não precisa gerar um documento BSON sozinho.
Digamos que em account.go você terá uma estrutura de conta:

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

Em dbEngine.go, sua função Insert:

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

E então, em algum lugar do seu aplicativo:

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

dbEngine.Insert(&acc);

1 para resposta № 2

o mgo motorista usa o labix.org/v2/mgo/bson pacote para lidar com a codificação / decodificação BSON. Na maior parte, este pacote é modelado após a biblioteca padrão encoding/json pacote.

Portanto, você pode usar estruturas e matrizes para representar objetos. Por exemplo,

type Document struct {
Id bson.ObjectId `bson:"_id"`
BalanceAmount int `bson:"balanceamount"`
Type string `bson:"type"`
Authentication Authentication `bson:"authentication"`
Stamps Stamps `bson:"stamps"`
}
type Authentication struct {
...
}
type Stamps struct {
...
}

Agora você pode criar valores deste tipo para passar para mgo.