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

mgo を使用してネストされた構造体を MongoDB に保存し、フラット化された構造を保持するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 00:53:02409ブラウズ

How to store nested structs in MongoDB with mgo and retain a flattened structure?

Mgo を使用して MongoDB にネストされた構造体を保存する

Go のネストされた構造体は、MongoDB ドキュメントに移行するときに問題が発生する可能性があります。 json.Marshal を使用して標準出力に書き込む場合、ネストされた構造体はフラット化されます。ただし、mgo.Upsert を使用する場合、ネストされた構造は維持されます。

MongoDB でフラット化された構造を維持するには、ネストされた構造体に bson:",inline" タグを使用します。このタグは、ネストされた構造体のフィールドが外側の構造体の一部であるかのように扱われる必要があることを示します。

たとえば、次のコードを考えてみましょう。

<code class="go">type Square struct {
    Length int
    Width int
}

type Cube struct {
    Square `bson:",inline"`
    Depth int
}</code>

ここで、Square 構造体は次のとおりです。 bson:",inline" タグを使用して Cube 構造体に埋め込まれます。この構造体で mgo.Upsert を使用すると、結果のドキュメントは次の形式になります:

{
     "Length":2,
     "Width":3,
     "Depth":4
}

このインライン タグのアプローチにより、元の構造体の定義を変更したり、手動平坦化テクニック

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

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