登录
首页 >  Golang >  Go问答

MongoDB 使用 JSON 注释对嵌套文档进行结构化编组

来源:stackoverflow

时间:2024-02-11 23:21:23 422浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《MongoDB 使用 JSON 注释对嵌套文档进行结构化编组》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

以下结构定义了我想要存储在 mongodb 集合中的文档(称为 parents):

type parent struct {
    id primitive.objectid `bson:"_id"`
    children []child `bson:"children"`
}

type child struct {
    field1 string `bson:"field1"`
}

我从我的项目依赖的外部包中获取以下类型的对象:

type LibParent struct {
 Children []*LibChild `json:"children"`
}

type LibChild struct {
    Field1 string `json:"field1"`
}

要在给定 parent 实例的 parents 集合中插入文档,我可以将 libparent 编组为 json,然后将其解组为 parent。然后我可以在对 insertone 的调用中使用父实例。

上面的示例类型简化了实际类型。实际类型有大量字段。

是否有更干净或更高效的方法来完成此操作,即在给定 libparent 对象的情况下将文档插入到 parents 集合中?谢谢!


正确答案


如果结构相同,您可以这样做:

type libparent struct {
    id primitive.objectid `json:"-" bson:"_id"`
    children []child `json:"children" bson:"children"`
}

type libchild struct {
    field1 string `json:"field1" bson:"field1"`
}

或者,如果结构字段相同,您可以:

var c Child
c=*(*Child)(&libChild)

这里,libchild是带有json标签的libchild的实例,c是带有bson标签的child。您可以迭代子数组并使用它进行转换。

本篇关于《MongoDB 使用 JSON 注释对嵌套文档进行结构化编组》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>