Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengambil Dokumen MongoDB oleh Array ID Objek menggunakan mgo dan bson?

Bagaimana untuk Mengambil Dokumen MongoDB oleh Array ID Objek menggunakan mgo dan bson?

Barbara Streisand
Barbara Streisandasal
2024-10-30 06:35:27709semak imbas

How to Retrieve MongoDB Documents by an Array of Object IDs using mgo and bson?

Mengambil semula Dokumen MongoDB oleh Tatasusunan ID Objek

Dalam MongoDB, adalah mungkin untuk menyimpan tatasusunan ID objek (juga dikenali sebagai _ids) dalam sesebuah dokumen. Untuk mendapatkan semula semua dokumen yang sepadan dengan ID objek tersebut dengan cekap, gunakan operator $in.

Soalan:

Anda mempunyai tatasusunan _id berkod hex:

ids := ["543d171c5b2c12420dd016", "543d171c5b2dd016"]

Bagaimana anda mendapatkan semula dokumen yang sepadan menggunakan mgo dan bson?

Jawapan:

Pendekatan awal anda menggunakan:

query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()

tidak betul kerana _id disimpan sebagai ID objek, bukan rentetan. Untuk mendapatkan semula dokumen mengikut ID objek, anda perlu menukar rentetan yang dikodkan heks kepada objek bson.ObjectId:

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}

query := bson.M{"_id": bson.M{"$in": oids}}
c.Find(query).All()

Kod ini:

  1. Mencipta kepingan bson.ObjectId objek.
  2. Lelaran melalui rentetan _id yang dikodkan hex, menukar setiap satu kepada ID objek menggunakan fungsi bson.ObjectIdHex.
  3. Membina pertanyaan di mana medan _id sepadan dengan mana-mana ID objek yang disediakan .
  4. Menggunakan kaedah Cari dan Semua untuk mendapatkan semula semua dokumen yang sepadan daripada koleksi MongoDB.

Atas ialah kandungan terperinci Bagaimana untuk Mengambil Dokumen MongoDB oleh Array ID Objek menggunakan mgo dan bson?. 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