/ / Ako zostaviť a odovzdať dokument Bson - Choďte lang? - mongodb, choď

Ako vytvoriť a odovzdať bson dokument - Go lang? - Mongodb, choď

používam ísť a mongoDB v mojom projekte a MgO je pripojiť sa pripojiť MongoDB.

Mám nasledujúci dokument, ktorý sa vloží do 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"
}
}

Vytvoril som dokument BSON ako je uvedené vyššie.

Mám dva balíčky

  1. account.go

  2. dbEngine.go

account.go sa používa na vytvorenie dokumentu BSON a odoslanie dokumentu BSON na adresu dbEngine.go

dbEngine.go sa používa na nadviazanie spojenia s MongoDB a vloženie dokumentu. počas odovzdávania dokumentu BSON do databázy dbEngine.go

dbEngine.Insert (bsonDocument);

V dbEngine.go mám metódu

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

Chyba : panika: Nedá sa maršalské rozhranie {} ako dokument BSON.

Či sa rozhranie {} nemá používať pre dokument BSON.

Som nový Go, Akékoľvek návrhy alebo pomoc budú vďačné

odpovede:

1 pre odpoveď č. 1

Nemusíte vytvárať dokument BSON sami.
Povedzme, že v účte.go budete mať štruktúru účtu:

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

Potom v dbEngine.go vaša funkcia Insert:

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

A potom niektoré z nich vo vašej aplikácii:

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

dbEngine.Insert(&acc);

1 pre odpoveď č. 2

Na mgo vodič používa labix.org/v2/mgo/bson balík na spracovanie kódovania / dekódovania BSON. Z väčšej časti je tento balík modelovaný podľa štandardnej knižnice encoding/json Balík.

Takže môžete použiť štruktúry a polia na reprezentáciu objektov. Napríklad,

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 {
...
}

Teraz môžete vytvoriť hodnoty tohto typu, do ktorých sa má odovzdať mgo.