首頁 >後端開發 >Golang >使用 mgo 檢索文件時,為什麼我會收到「ObjectIDs 必須恰好是 12 個位元組長(有 24 個位元組)」?

使用 mgo 檢索文件時,為什麼我會收到「ObjectIDs 必須恰好是 12 個位元組長(有 24 個位元組)」?

Linda Hamilton
Linda Hamilton原創
2024-11-01 09:27:30212瀏覽

Why Am I Getting

在Go 中使用mgo 解決Mongo ID 檢索問題

在Go 中使用mgo 庫進行MongoDB 操作時,您可能會遇到很難找到一個文檔通過其ID。本文旨在解決這樣一個問題,為錯誤「ObjectIDs 必須恰好為12 個位元組長(有24 個位元組)。」

問題:

何時嘗試使用FindId 方法按ID 檢索文件時,您會收到一條錯誤,指示指定的ID 長度為24 字節,而不是預期的12 位元組。儘管驗證了 MongoDB 中文件的存在,但您無法檢索到它。

答案:

錯誤訊息提供了重要提示:「ObjectIDs 必須恰好是12位元組長(有24 個位元組)。」這表示您使用的ID 不是有效的ObjectId 值。

在 Go 中,MongoDB 的物件 ID 表示為 12 位元組值。但是,您使用的 ID 長度為 24 個字元。差異是由於 ID 的十六進位表示形式引起的,其中每個位元組表示為兩個十六進位數字。

要解決此問題,您需要利用 bson.ObjectIdHex 函數將 24 個字元的十六進位 ID 轉換為有效的 bson.ObjectId 值。更正後的程式碼應如下所示:

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

或者,您可以使用 ObjectId.Hex 方法取得 ObjectId 值的十六進位表示形式。這將允許您在需要時使用字串格式的 ID。

透過執行以下步驟,您可以使用 mgo 庫按 ID 有效檢索文檔,確保指定的 ID 格式正確,並且尺寸。

以上是使用 mgo 檢索文件時,為什麼我會收到「ObjectIDs 必須恰好是 12 個位元組長(有 24 個位元組)」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn