Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich BSON-Dokumente an Funktionen in Go mit mgo?

Wie übergebe ich BSON-Dokumente an Funktionen in Go mit mgo?

Barbara Streisand
Barbara StreisandOriginal
2024-11-21 13:22:11872Durchsuche

How to Pass BSON Documents to Functions in Go with mgo?

Übergabe von BSON-Dokumenten in Go Lang

In Go können Sie eine Verbindung zu MongoDB herstellen und Daten mithilfe der MGO-Bibliothek bearbeiten. Um Dokumente in MongoDB einzufügen, müssen Sie BSON-Dokumente erstellen, die die Daten darstellen, die Sie speichern möchten.

Beim Übergeben eines BSON-Dokuments an eine Funktion in einem anderen Paket (z. B. dbEngine.go) kann es zu Problemen kommen ein Fehler bei der Verwendung des Typs interface{}. Dies liegt daran, dass mgo erwartet, dass ein bestimmter Typ der BSON-Dokumentstruktur zugeordnet wird.

Anstatt BSON-Dokumente manuell zu erstellen, wird empfohlen, eine Go-Struktur zu verwenden, um die Form der Daten zu definieren, die Sie einfügen möchten. Beispielsweise können Sie in account.go eine Struktur wie folgt erstellen:

type Account struct {
  Id bson.ObjectId `bson:"_id"`
  BalanceAmount int
  // Other field
}

Dann können Sie in dbEngine.go Ihre Einfügefunktion aktualisieren, um einen Zeiger auf die Struktur zu akzeptieren:

func Insert(document interface{}){
  session, err := mgo.Dial("localhost")
  // check error
  c := session.DB("db_name").C("collection_name")
  err := c.Insert(document)
}

Schließlich können Sie mit der Struktur ein neues Konto erstellen und es in MongoDB einfügen:

acc := Account{}
acc.Id = bson.NewObjectId()
acc.BalanceAmount = 3

dbEngine.Insert(&acc);

Durch die Verwendung von a struct stellen Sie sicher, dass die Daten richtig formatiert und mit der von MongoDB geforderten BSON-Dokumentstruktur kompatibel sind.

Das obige ist der detaillierte Inhalt vonWie übergebe ich BSON-Dokumente an Funktionen in Go mit mgo?. 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