首页  >  文章  >  后端开发  >  如何使用 mgo 存储嵌套的 Go 结构,同时在 MongoDB 中维护其结构?

如何使用 mgo 存储嵌套的 Go 结构,同时在 MongoDB 中维护其结构?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 18:21:02467浏览

How do I store nested Go structs with mgo while maintaining their structure in MongoDB?

使用 mgo 存储嵌套结构

当尝试使用 mgo 将嵌套 Go 结构存储为 MongoDB 文档时,用户可能会遇到扁平化结构的问题。虽然 json.Marshal 函数可以生成所需的平面结构,但在更新插入到 MongoDB 时,它会将数据存储为二进制。

为了在更新期间维护嵌套结构,mgo 提供了 bson:",inline" 字段标签。此标记内联嵌套结构,导致其字段被视为外部结构的一部分。例如,考虑以下简化的嵌套结构:

<code class="go">type Square struct {
    Length int 
    Width int
}

type Cube struct {
    Square
    Depth int
}</code>

通过将 bson:",inline" 标签添加到 Square 字段,该结构定义如下:

<code class="go">type Cube struct {
    Square `bson:",inline"`
    Depth  int
}</code>

当使用 mgo 更新插入 MongoDB 时,数据现在将具有所需的平面结构:

<code class="json">{
     "Length":2,
     "Width":3,
     "Depth":4
}</code>

这种方法允许用户在成功将嵌套结构存储在 MongoDB 中的同时保持其 Go 代码的可读性和结构。

以上是如何使用 mgo 存储嵌套的 Go 结构,同时在 MongoDB 中维护其结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn