ホームページ  >  記事  >  バックエンド開発  >  Golang の Mgo ライブラリで FindId() を使用するときに発生する「ObjectID は正確に 12 バイトの長さである必要があります」エラーを修正する方法

Golang の Mgo ライブラリで FindId() を使用するときに発生する「ObjectID は正確に 12 バイトの長さである必要があります」エラーを修正する方法

DDD
DDDオリジナル
2024-10-31 19:41:01950ブラウズ

How to Fix

Golang の Mgo ライブラリでの FindId() の使用法のトラブルシューティング

mgo で FindId() 関数を使用してドキュメントを取得しようとすると、エラーが発生します無効な ObjectId 値が原因で発生する可能性があります。エラー メッセージ「ObjectID は正確に 12 バイトの長さでなければなりません」は、指定された ID が予期した形式ではないことを示します。

ObjectId 形式について

MongoDB の ObjectId は次のとおりです。ドキュメントを一意に識別する 12 バイトの値。通常、24 文字の 16 進文字列として表されます。 mgo ライブラリは、ObjectId が bson.ObjectId オブジェクトまたは 12 バイトのバイナリ表現として提供されることを期待します。

問題の解決

提供されたコードでは、 message.ID は、ObjectId の 16 進表現を含む文字列です。この値を FindId() で使用するには、 bson.ObjectIdHex() 関数を使用して bson.ObjectId オブジェクトに変換する必要があります。

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

bson.ObjectIdHex() を使用すると、提供された文字列が正しく解釈され、有効な ObjectId 値に変換され、エラーが解決されます。

以上がGolang の Mgo ライブラリで FindId() を使用するときに発生する「ObjectID は正確に 12 バイトの長さである必要があります」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。