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>
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>
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>
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!