首頁 > 後端開發 > Golang > 主體

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

Linda Hamilton
發布: 2024-11-01 09:27:30
原創
134 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!