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

Mary-Kate Olsen
リリース: 2024-11-04 18:21:02
オリジナル
521 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート