无法从 MongoDB 获取完整文档

我有一个 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 驱动程序的工作原理



慕神8447489
浏览 118回答 1
1回答

犯罪嫌疑人X

当我尝试使用 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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go