Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membina dan Lulus Dokumen BSON dalam Go untuk MongoDB?

Bagaimana untuk Membina dan Lulus Dokumen BSON dalam Go untuk MongoDB?

Barbara Streisand
Barbara Streisandasal
2024-11-17 06:47:03182semak imbas

How to Construct and Pass BSON Documents in Go for MongoDB?

Membina dan Menghantar Dokumen BSON dalam Go dengan MongoDB

Dalam aplikasi Go anda, anda menghadapi masalah di mana percubaan untuk memasukkan dokumen BSON menggunakan fungsi Insert(interface{}) dalam dbEngine.go mengakibatkan ralat: "panic: Can't marshall interface {} as a Dokumen BSON."

Untuk menyelesaikan isu ini, adalah penting untuk memahami bahawa dalam Go, anda tidak perlu membuat dan menghantar dokumen BSON secara manual. Sebaliknya, anda boleh menggunakan ciri MongoDB BSON marshaling, yang menukar struct Go ke dalam dokumen BSON secara automatik.

Untuk melaksanakan ini, buat struct dalam account.go untuk mewakili dokumen yang ingin anda masukkan, contohnya:

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

Dalam dbEngine.go anda, kemas kini fungsi Sisipkan sebagai berikut:

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

Akhir sekali, dalam aplikasi utama, nyatakan struct Akaun, tetapkan medannya dan hantar ke fungsi Sisip:

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

dbEngine.Insert(&acc);

Dengan mengikuti langkah ini, anda boleh memudahkan proses pengendalian dokumen BSON dan mengelakkan ralat yang anda hadapi.

Atas ialah kandungan terperinci Bagaimana untuk Membina dan Lulus Dokumen BSON dalam Go untuk MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn