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

Barbara Streisand
Lepaskan: 2024-10-30 06:35:27
asal
718 orang telah melayarinya

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"]
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!