首页  >  文章  >  后端开发  >  如何修复在 Golang 的 Mgo 库中使用 FindId() 时出现的“ObjectIDs 必须恰好为 12 个字节长”错误?

如何修复在 Golang 的 Mgo 库中使用 FindId() 时出现的“ObjectIDs 必须恰好为 12 个字节长”错误?

DDD
DDD原创
2024-10-31 19:41:01950浏览

How to Fix

Golang 的 Mgo 库中 FindId() 使用问题排查

尝试使用 mgo 中的 FindId() 函数检索文档时,出现错误可能由于无效的 ObjectId 值而出现。错误消息“ObjectIDs 必须恰好是 12 个字节长”表示提供的 ID 不是预期的格式。

理解 ObjectId 格式

MongoDB 中的 ObjectId 是唯一标识文档的 12 字节值。它通常表示为 24 个字符的十六进制字符串。 mgo 库期望以 bson.ObjectId 对象或 12 字节二进制表示形式提供 ObjectId。

解决问题

在提供的代码中, message.ID 是包含 ObjectId 的十六进制表示形式的字符串。要将此值与 FindId() 一起使用,必须使用 bson.ObjectIdHex() 函数将其转换为 bson.ObjectId 对象:

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

通过使用 bson.ObjectIdHex(),您可以确保提供的字符串被正确解释并转换为有效的 ObjectId 值,解决了错误。

以上是如何修复在 Golang 的 Mgo 库中使用 FindId() 时出现的“ObjectIDs 必须恰好为 12 个字节长”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn