Cari ID dengan Perpustakaan mgo di Golang
Dalam kod yang disediakan, isu biasa timbul apabila cuba mencari dokumen menggunakan IDnya menggunakan perpustakaan mgo di Golang. Kunci untuk memahami ralat ini terletak pada sifat ID objek dalam MongoDB.
Memahami ID Objek
ID Objek dalam MongoDB ialah nilai heksadesimal 12 bait unik yang berfungsi sebagai kunci utama bagi setiap dokumen. Walau bagaimanapun, apabila bekerja dengan Golang, ID ini sering diwakili sebagai rentetan heksadesimal 24 aksara. Ini kerana rentetan ini mengekodkan 12 bait ID objek menggunakan dua digit heksadesimal setiap bait.
Ralat
Mesej ralat "ObjectIDs mestilah tepat 12 bait long (mendapat 24)" menunjukkan bahawa kod itu cuba menggunakan rentetan 24 aksara sebagai ID objek. Walau bagaimanapun, MongoDB menjangkakan ID objek 12-bait, yang bukan apa yang diwakili oleh rentetan 24 aksara.
Penyelesaian
Penyelesaian kepada isu ini adalah dengan menggunakan fungsi bson.ObjectIdHex() untuk menukar rentetan heksadesimal 24 aksara kepada bson.ObjectId yang sah. Kod yang diubah suai sepatutnya kelihatan seperti ini:
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
Sekarang, pembolehubah ralat akan menunjukkan dengan betul sama ada dokumen dengan ID yang ditentukan telah ditemui.
Menukar Kembali
Dalam senario di mana anda mempunyai bson.ObjectId dan perlu mendapatkan perwakilan heksadesimal 24 aksaranya, anda boleh menggunakan kaedah ObjectId.Hex().
Maklumat Tambahan
Adalah penting untuk ambil perhatian bahawa walaupun mesej ralat menunjukkan bahawa percanggahan panjang ialah 24 bait, ia sebenarnya 12 bait. Ini kerana saiz ID objek ialah 12 bait, tetapi mesej ralat juga termasuk petikan yang mengelilingi rentetan perenambelasan.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Dokumen dengan ID Menggunakan Perpustakaan mgo di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!