gpt4 book ai didi

MongoDB Go 驱动程序无法正确解码嵌套文档

转载 作者:行者123 更新时间:2023-12-01 22:13:53 25 4
gpt4 key购买 nike

我有一个在集合中的特定字段上操作的 setter 和 getter。 setter 工作正常,文档按预期更新,但是 getter 没有正确返回填充的结构。 我究竟做错了什么 ?

作为 Go 结构的集合 :


type Model struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
EntityType string `bson:"entity_type,omitempty"`
EntityID string `bson:"entity_id,omitempty"`
ConfigSource ConfigSources `bson:"config_source,inline,omitempty"`
}

type ConfigSources struct {
Configs []ConfigSource `bson:"configs,omitempty"`
}

type ConfigSource struct {
Hour int `bson:"hour"`
Source string `bson:"source"`
}


setter 片段:

cfg := ConfigSources{
Configs: []ConfigSource{
{
Hour: 1,
Source: "Hour_1_Source",
},
{
Hour: 2,
Source: "Hour_2_Source",
},
},
}
c := db.Collection("foo")
selectorQuery := bson.M{"entity_id": entityId}
updateQuery := bson.M{"$set": bson.M{"config_source": configName}}
result, err := c.UpdateMany(ctx, selectorQuery, updateQuery)

setter/getter 片段:

c := db.Collection("foo")
q, err := c.Find(ctx, bson.M{"_id": bson.M{"$in": idsImQuerying}})
if err != nil {
return nil
}
var results []Model
err = q.All(ctx, &results)
fmt.Printf("\n\n\n\n%#v\n\n\n\n", results) // this output is shown below

得到的结果:
[]Model{
Model{
ID:primitive.ObjectID{0x5a, 0xa9, 0x7a, 0x40, 0xdf, 0xe5, 0x90, 0x44, 0x49, 0xdb, 0x61, 0x4},
EntityType:"CELL",
EntityID:"4110902605985611776",
ConfigSource:ConfigSources{
Configs:[]ConfigSource(nil)
}
}
}

在 Atlas 中查看的字段:

screenshot of atlas document viewer

最佳答案

一旦我从模型结构中删除内联,它就可以正常工作

     type Model struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
EntityType string `bson:"entity_type,omitempty"`
EntityID string `bson:"entity_id,omitempty"`
ConfigSource ConfigSources `bson:"config_source,omitempty"`
}

关于MongoDB Go 驱动程序无法正确解码嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61911448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com