无法解码来自 MongoDB 的嵌入文档(嵌套)
Can't decode embedded documents (nested) from MongoDB
我需要从 MongoDB 获取文档并将其放入具有自定义类型的结构中。
type translate_t struct {
Sources []string `bson:"sources"`
Targets []string `bson:"targets"`
}
type practice_t struct {
Id primitive.ObjectID `bson:"_id"`
Translate translate_t `bson:"translate"`
}
数据库中的数据符合预期。
"practice": {
"translate": {
"sources": ["data", "more data"]
"target": ["even", "more", "data"]
}
}
我的工作(非常基础):
var item practice_t
err = collection.FindOne(ctx, filter).Decode(&item)
log.Printf("item:%+v", item)
日志打印如下:
{Id:ObjectId("5deeblablabla"), Translate:{Sources:[] Targets:[]}} //where is my sweet data?
现在,我想指出所有其他项目(未嵌套自定义结构)得到正确解码。所以,在我看来 Decode() 函数不喜欢自定义结构......
这看起来是一项非常常见的任务,所以我错过了什么吗?
我一直在阅读有关覆盖默认解码器或类似内容的信息,但对于这么简单的事情来说,这似乎太过分了。
你错过了"practice":
type doc struct {
Practice practice_t `bson:"practice"`
}
数据库文档必须在结构上与您正在解组的文档相匹配。您显示数据库文档是一个带有 practice
字段的对象。那么你必须有一个结构,其字段标记为 practice
.
我需要从 MongoDB 获取文档并将其放入具有自定义类型的结构中。
type translate_t struct {
Sources []string `bson:"sources"`
Targets []string `bson:"targets"`
}
type practice_t struct {
Id primitive.ObjectID `bson:"_id"`
Translate translate_t `bson:"translate"`
}
数据库中的数据符合预期。
"practice": {
"translate": {
"sources": ["data", "more data"]
"target": ["even", "more", "data"]
}
}
我的工作(非常基础):
var item practice_t
err = collection.FindOne(ctx, filter).Decode(&item)
log.Printf("item:%+v", item)
日志打印如下:
{Id:ObjectId("5deeblablabla"), Translate:{Sources:[] Targets:[]}} //where is my sweet data?
现在,我想指出所有其他项目(未嵌套自定义结构)得到正确解码。所以,在我看来 Decode() 函数不喜欢自定义结构...... 这看起来是一项非常常见的任务,所以我错过了什么吗? 我一直在阅读有关覆盖默认解码器或类似内容的信息,但对于这么简单的事情来说,这似乎太过分了。
你错过了"practice":
type doc struct {
Practice practice_t `bson:"practice"`
}
数据库文档必须在结构上与您正在解组的文档相匹配。您显示数据库文档是一个带有 practice
字段的对象。那么你必须有一个结构,其字段标记为 practice
.