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 コードの読みやすさと構造を維持できます。
以上がMongoDB で構造を維持しながら、ネストされた Go 構造体を mgo で保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。