Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Dokumen BSON ke Fungsi dalam Go dengan mgo?

Bagaimana untuk Menghantar Dokumen BSON ke Fungsi dalam Go dengan mgo?

Barbara Streisand
Barbara Streisandasal
2024-11-21 13:22:11872semak imbas

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

Meluluskan Dokumen BSON dalam Go Lang

Dalam Go, anda boleh menyambung ke MongoDB dan memanipulasi data menggunakan pustaka mgo. Untuk memasukkan dokumen ke dalam MongoDB, anda perlu membina dokumen BSON, yang mewakili data yang anda ingin simpan.

Apabila menghantar dokumen BSON ke fungsi dalam pakej lain (cth., dbEngine.go), anda mungkin menghadapi ralat apabila menggunakan jenis antara muka{}. Ini kerana mgo menjangkakan jenis tertentu untuk dipetakan kepada struktur dokumen BSON.

Daripada membuat dokumen BSON secara manual, adalah disyorkan untuk menggunakan struct Go untuk mentakrifkan bentuk data yang ingin anda masukkan. Contohnya, dalam account.go, anda boleh mencipta struct seperti:

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

Kemudian, dalam dbEngine.go, anda boleh mengemas kini fungsi Insert anda untuk menerima penunjuk kepada struct:

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

Akhir sekali, anda boleh menggunakan struct untuk mencipta akaun baharu dan memasukkannya ke dalam MongoDB:

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

dbEngine.Insert(&acc);

Dengan menggunakan struct, anda memastikan bahawa data diformat dengan betul dan serasi dengan struktur dokumen BSON yang diperlukan oleh MongoDB.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Dokumen BSON ke Fungsi dalam Go dengan mgo?. 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