Maison > développement back-end > Golang > le corps du texte

Comment stocker des structures imbriquées dans MongoDB avec mgo et conserver une structure aplatie ?

Barbara Streisand
Libérer: 2024-11-07 00:53:02
original
410 Les gens l'ont consulté

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

Stockage de structures imbriquées dans MongoDB avec Mgo

Les structures imbriquées dans Go peuvent poser un défi lors de la transition vers des documents MongoDB. Lors de l'utilisation de json.Marshal et de l'écriture sur la sortie standard, les structures imbriquées sont aplaties. Cependant, lors de l'utilisation de mgo.Upsert, la structure imbriquée est conservée.

Pour conserver la structure aplatie dans MongoDB, utilisez la balise bson:",inline" pour la structure imbriquée. Cette balise indique que les champs de la structure imbriquée doivent être traités comme s'ils faisaient partie de la structure externe.

Par exemple, considérons le code suivant :

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

type Cube struct {
    Square `bson:",inline"`
    Depth int
}</code>
Copier après la connexion

Ici, la structure Square est intégré dans la structure Cube avec la balise bson:",inline". Lors de l'utilisation de mgo.Upsert avec cette structure, le document résultant aura le format suivant :

{
     "Length":2,
     "Width":3,
     "Depth":4
}
Copier après la connexion

Cette approche de balise en ligne vous permet de conserver la structure aplatie souhaitée dans MongoDB sans modifier la définition de la structure d'origine ni recourir à techniques d'aplatissement manuel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!