當嘗試使用 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中文網其他相關文章!