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

Wie speichere ich verschachtelte Strukturen in MongoDB mit mgo und behalte eine abgeflachte Struktur bei?

Barbara Streisand
Barbara StreisandOriginal
2024-11-07 00:53:02478Durchsuche

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

Speichern verschachtelter Strukturen in MongoDB mit Mgo

Verschachtelte Strukturen in Go können beim Übergang zu MongoDB-Dokumenten eine Herausforderung darstellen. Wenn Sie json.Marshal verwenden und in die Standardausgabe schreiben, werden verschachtelte Strukturen reduziert. Bei Verwendung von mgo.Upsert bleibt jedoch die verschachtelte Struktur erhalten.

Um die abgeflachte Struktur in MongoDB beizubehalten, verwenden Sie das Tag „bson:“,inline“ für die verschachtelte Struktur. Dieses Tag gibt an, dass die Felder der verschachtelten Struktur so behandelt werden sollen, als wären sie Teil der äußeren Struktur.

Betrachten Sie beispielsweise den folgenden Code:

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

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

Hier ist die Square-Struktur eingebettet in die Cube-Struktur mit dem bson:",inline"-Tag. Wenn Sie mgo.Upsert mit dieser Struktur verwenden, hat das resultierende Dokument das folgende Format:

{
     "Length":2,
     "Width":3,
     "Depth":4
}

Dieser Inline-Tag-Ansatz ermöglicht es Ihnen, die gewünschte abgeflachte Struktur in MongoDB beizubehalten, ohne die ursprüngliche Strukturdefinition zu ändern oder darauf zurückzugreifen manuelle Abflachungstechniken.

Das obige ist der detaillierte Inhalt vonWie speichere ich verschachtelte Strukturen in MongoDB mit mgo und behalte eine abgeflachte Struktur 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