当尝试使用 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中文网其他相关文章!