Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat \"ObjectIDs mestilah tepat 12 bait panjang (mendapat 24)\" Apabila Mendapatkan Dokumen dengan mgo?

Mengapa Saya Mendapat \"ObjectIDs mestilah tepat 12 bait panjang (mendapat 24)\" Apabila Mendapatkan Dokumen dengan mgo?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 09:27:30123semak imbas

Why Am I Getting

Menyelesaikan masalah Mendapatkan ID Mongo dengan mgo dalam Go

Dalam menggunakan perpustakaan mgo untuk operasi MongoDB dalam Go, anda mungkin menghadapi kesukaran untuk mencari dokumen dengan IDnya. Artikel ini bertujuan untuk menangani satu isu sedemikian, memberikan penyelesaian kepada ralat "ObjectIDs mestilah tepat 12 bait panjang (mendapat 24)."

Masalah:

Bila cuba mendapatkan semula dokumen dengan IDnya menggunakan kaedah FindId, anda menerima ralat yang menunjukkan bahawa ID yang ditentukan adalah panjang 24 bait dan bukannya 12 bait yang dijangkakan. Walaupun mengesahkan kewujudan dokumen dalam MongoDB, anda gagal mendapatkannya.

Jawapan:

Mesej ralat memberikan petunjuk penting: "ObjectIDs mestilah tepat 12 bait panjang (mendapat 24)." Ini bermakna ID yang anda gunakan bukan nilai ObjectId yang sah.

Dalam Go, ID objek MongoDB diwakili sebagai nilai 12-bait. Walau bagaimanapun, ID yang anda gunakan adalah sepanjang 24 aksara. Percanggahan timbul daripada perwakilan heksadesimal ID, di mana setiap bait diwakili sebagai dua digit perenambelasan.

Untuk menyelesaikan isu ini, anda perlu menggunakan fungsi bson.ObjectIdHex untuk menukar ID perenambelasan 24 aksara kepada nilai bson.ObjectId yang sah. Kod yang diperbetulkan sepatutnya kelihatan seperti ini:

<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>

Sebagai alternatif, anda boleh menggunakan kaedah ObjectId.Hex untuk mendapatkan perwakilan heksadesimal bagi nilai ObjectId. Ini akan membolehkan anda bekerja dengan ID dalam format rentetan apabila diperlukan.

Dengan mengikuti langkah ini, anda boleh mendapatkan dokumen dengan berkesan menggunakan ID mereka menggunakan perpustakaan mgo, memastikan ID yang dinyatakan dalam format yang betul dan saiz.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \"ObjectIDs mestilah tepat 12 bait panjang (mendapat 24)\" Apabila Mendapatkan Dokumen 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