亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從 MongoDB 獲取完整文檔

無法從 MongoDB 獲取完整文檔

Go
慕神8447489 2023-07-04 17:28:51
我有一個 MongoDB 集合,其中包含這種形式的項目    {    "_id" : "base_519",    "Name" : "Name",    "Position" : 1000,    "Type" : "Base",    "Visible" : true,    "Preview" : "/preview/preview.jpg",    "IsBase" : true,    "Product" : "product-2",    "Categories" : [         "category_1"    ],    "ObjData" : [         {            "_t" : "ObjDataNormal",            "CanBuy" : false,            "Foreground" : "/fg/foreground.gif",            "Background" : "null.no.gif",            "HasRatio" : false,            "Ratio" : "0",            "HasPadding" : true,            "Padding" : 40,            "Mask" : {                "_id" : 0,                "Name" : "",                "X" : 39,                "Y" : 85,                "Width" : 422,                "Height" : 332            }        }    ]}但是當我嘗試使用 go 獲取整個集合時,不會返回 ObjData 字段,而是得到了這個{        "id": "base_519",        "name": "Name",        "position": 1000,        "type": "Base",        "visible": true,        "preview": "/preview/preview.jpg",        "isbase": true,        "product": "product-2",        "categories": [            "category_1"        ]    }我是 Go 語言的新手,這只是我第一次嘗試使用 mongodb 驅動程序。我在 Go 中使用的結構是這些那么我在這里缺少什么?正如我所說,我是 Go lang 的新手,所以我可能不太了解該語言和 mongo 驅動程序的工作原理
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

當我嘗試使用 go 獲取整個集合時,不會返回 ObjData 字段


返回嵌套字段ObjData,但未解碼為提供的結構。


這是因為該結構ObjDataType有一個值不符合返回的文檔。該結構已定義Ratio為,float64但文檔的值為0in string。


您可以通過更改結構定義或文檔值來解決此問題。即將結構更改為:


type ObjDataType struct {

    Type       string   `json:"type,omitempty" bson:"_t,omitempty"`

    CanBuy     bool     `json:"canbuy,omitempty" bson:"CanBuy,omitempty"`

    Foreground string   `json:"foreground,omitempty" bson:"Foreground,omitempty"`

    Background string   `json:"background,omitempty" bson:"Background,omitempty"`

    HasRatio   bool     `json:"hasratio,omitempty" bson:"HasRatio,omitempty"`

    Ratio      string  `json:"ratio,omitempty" bson:"Ratio,omitempty"`

    HasPadding bool     `json:"haspadding,omitempty" bson:"HasPadding,omitempty"`

    Padding    int      `json:"padding,omitempty" bson:"Padding,omitempty"`

    Mask       MaskType `json:"mask,omitempty" bson:"Mask,omitempty"`

}

bson.M對于您的學習之旅來說,一個額外的提示是,您可以使用而不是您的結構來調試代碼的解碼部分。例如:


for cursor.Next(ctx) {

    var variant bson.M

    cursor.Decode(&variant)

    variants = append(variants, variant)

    fmt.Println(variant)

}


查看完整回答
反對 回復 2023-07-04
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號