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 サイトの他の関連記事を参照してください。