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

Comment stocker des structures Go imbriquées avec mgo tout en conservant leur structure dans MongoDB ?

Mary-Kate Olsen
Libérer: 2024-11-04 18:21:02
original
521 Les gens l'ont consulté

How do I store nested Go structs with mgo while maintaining their structure in MongoDB?

Stockage de structures imbriquées avec mgo

Lorsqu'ils tentent de stocker une structure Go imbriquée en tant que document MongoDB à l'aide de mgo, les utilisateurs peuvent rencontrer des problèmes avec la structure aplatie. Bien que la fonction json.Marshal puisse produire la structure plate souhaitée, elle stocke les données sous forme binaire lorsqu'elles sont insérées dans MongoDB.

Pour conserver la structure imbriquée pendant l'insertion, mgo fournit la balise de champ bson:",inline". Cette balise intègre la structure imbriquée, ce qui fait que ses champs sont traités comme faisant partie de la structure externe. Par exemple, considérons la structure imbriquée simplifiée suivante :

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

type Cube struct {
    Square
    Depth int
}</code>
Copier après la connexion

En ajoutant la balise bson:",inline" au champ Square, la structure est définie comme suit :

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

Une fois insérées dans MongoDB à l'aide de mgo, les données auront désormais la structure plate souhaitée :

<code class="json">{
     "Length":2,
     "Width":3,
     "Depth":4
}</code>
Copier après la connexion

Cette approche permet aux utilisateurs de maintenir la lisibilité et la structure de leur code Go tout en stockant avec succès les structures imbriquées dans MongoDB.

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