3
由於某種原因,mgo
將空結構插入數據庫爲空值,即使我設置了omitempty選項。golang/mgo:忽略插入的空字段
package main
import (
"fmt"
"encoding/json"
)
type A struct {
A bool
}
type B struct {
X int `json:"x,omitempty" bson:"x,omitempty"`
SomeA *A `json:"a,omitempty" bson:"a,omitempty"`
}
func main() {
b := B{}
b.X = 123
if buf, err := json.MarshalIndent(&b, "", " "); err != nil {
fmt.Println(err)
} else {
fmt.Println(string(buf))
}
}
JSON的編碼器省去了SomeA
財產,但在數據庫中它的存在爲"a" : null
。 我做錯了什麼,或者根本不可能這樣做?
你能告訴我們你是如何將其插入蒙戈? – 2014-09-18 23:31:04
應該跳過該值:http://bazaar.launchpad.net/+branch/mgo/v2/view/head:/bson/encode.go#L165 – 2014-09-18 23:44:55
我在結構A中有一個額外的字段:Id bson.ObjectId 'bson:「_ id」'我簡單地調用Insert函數: err = db.Mongo.C(「collection」)。Insert(&b) – Andrew 2014-09-18 23:45:35