Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyoal MongoDB dari Go Menggunakan Array ID Objek?

Bagaimana untuk Menyoal MongoDB dari Go Menggunakan Array ID Objek?

DDD
DDDasal
2024-10-29 20:06:02187semak imbas

How to Query MongoDB from Go Using an Array of Object IDs?

Menyoal MongoDB daripada Go Menggunakan Tatasusunan ID Objek

Dalam MongoDB, dokumen boleh menyimpan IDnya dalam tatasusunan rentetan atau Objek ID. Apabila menggunakan pakej mgo untuk mendapatkan berbilang dokumen berdasarkan ID Objek mereka yang disimpan dalam tatasusunan, adalah penting untuk memastikan pendekatan yang betul diikuti.

Pertanyaan Salah

Pertanyaan yang diberikan:

query := bson.M{"_id": bson.M{"$in": ids}}

tidak betul untuk ID Objek kerana id ialah tatasusunan rentetan. MongoDB menjangkakan ID Objek untuk operator $in.

Pertanyaan Betul untuk ID Objek

Untuk membuat pertanyaan untuk ID Objek yang disimpan dalam tatasusunan, tukar rentetan kepada ID Objek sebelum membina pertanyaan:

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}
query := bson.M{"_id": bson.M{"$in": oids}}

Gelung for berulang pada tatasusunan rentetan, menukar setiap satu kepada ID Objek menggunakan bson.ObjectIdHex(rentetan) dan menyimpannya dalam kepingan oids. Potongan oid yang terhasil akan mengandungi ID Objek. Pertanyaan itu kemudiannya dibina menggunakan kepingan oids untuk operator $in.

Dengan menggunakan pertanyaan yang betul untuk ID Objek, anda boleh mendapatkan berbilang dokumen dengan ID yang sepadan dengan cekap daripada MongoDB menggunakan Go dan pakej mgo.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal MongoDB dari Go Menggunakan Array ID Objek?. 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