Maison > développement back-end > Golang > Comment puis-je stocker des structures imbriquées dans MongoDB tout en préservant leur structure dans Go ?

Comment puis-je stocker des structures imbriquées dans MongoDB tout en préservant leur structure dans Go ?

Linda Hamilton
Libérer: 2024-11-06 01:04:02
original
282 Les gens l'ont consulté

How can I store nested structs in MongoDB while preserving their structure in Go?

Stockage de structures imbriquées avec mgo

Lorsqu'ils traitent des structures imbriquées dans Go et MongoDB, les développeurs sont souvent confrontés au défi de maintenir la structure souhaitée pendant stockage.

Le problème survient lors de la conversion d'une structure Go en un document MongoDB. Les structures imbriquées simples peuvent être aplaties pour empêcher le stockage binaire, mais l'aplatissement de structures plus complexes peut compromettre la lisibilité du code.

Une solution consiste à utiliser la balise de champ en ligne dans le package mgo. La balise inline demande à mgo de traiter les structures intégrées comme si elles faisaient partie de la structure conteneur, en préservant la hiérarchie d'imbrication.

Par exemple, considérons l'extrait de 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

Avec le balise en ligne appliquée à Square, la structure intégrée sera aplatie lors de la conversion en document MongoDB, ce qui entraîne :

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

Cette approche permet aux développeurs de conserver les structures imbriquées tout en garantissant que les données sont stockées dans le format souhaité dans MongoDB. Sans la balise en ligne, la structure Square imbriquée serait stockée en tant que champ distinct dans le document Cube.

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