Heim  >  Artikel  >  Backend-Entwicklung  >  Wie speichere ich verschachtelte Go-Strukturen mit mgo und behalte gleichzeitig ihre Struktur in MongoDB bei?

Wie speichere ich verschachtelte Go-Strukturen mit mgo und behalte gleichzeitig ihre Struktur in MongoDB bei?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 18:21:02467Durchsuche

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

Speichern verschachtelter Strukturen mit mgo

Beim Versuch, eine verschachtelte Go-Struktur als MongoDB-Dokument mit mgo zu speichern, können Benutzer auf Probleme mit der abgeflachten Struktur stoßen. Während die json.Marshal-Funktion die gewünschte flache Struktur erzeugen kann, speichert sie die Daten beim Upserting in MongoDB als Binärdatei.

Um die verschachtelte Struktur während des Upsertings beizubehalten, stellt mgo das Feld-Tag bson:",inline" bereit. Dieses Tag fügt die verschachtelte Struktur ein, wodurch ihre Felder als Teil der äußeren Struktur behandelt werden. Betrachten Sie beispielsweise die folgende vereinfachte verschachtelte Struktur:

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

type Cube struct {
    Square
    Depth int
}</code>

Durch Hinzufügen des bson:",inline"-Tags zum Quadratfeld wird die Struktur wie folgt definiert:

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

Beim Einfügen in MongoDB mit mgo haben die Daten nun die gewünschte flache Struktur:

<code class="json">{
     "Length":2,
     "Width":3,
     "Depth":4
}</code>

Dieser Ansatz ermöglicht es Benutzern, die Lesbarkeit und Struktur ihres Go-Codes beizubehalten und gleichzeitig verschachtelte Strukturen erfolgreich in MongoDB zu speichern.

Das obige ist der detaillierte Inhalt vonWie speichere ich verschachtelte Go-Strukturen mit mgo und behalte gleichzeitig ihre Struktur in MongoDB bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn