ホームページ  >  記事  >  バックエンド開発  >  MongoDB で構造を維持しながら、ネストされた Go 構造体を mgo で保存するにはどうすればよいですか?

MongoDB で構造を維持しながら、ネストされた Go 構造体を mgo で保存するにはどうすればよいですか?

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 コードの読みやすさと構造を維持できます。

以上がMongoDB で構造を維持しながら、ネストされた Go 構造体を mgo で保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。