ホームページ > バックエンド開発 > Golang > mongo-go-driver で bson.RawValue を使用して _id でドキュメントを検索する方法は?

mongo-go-driver で bson.RawValue を使用して _id でドキュメントを検索する方法は?

Barbara Streisand
リリース: 2024-10-31 18:10:48
オリジナル
1093 人が閲覧しました

How to Find a Document by _id Using bson.RawValue in mongo-go-driver?

mongo-go-driver を使用した _id によるドキュメントの検索

mongo-go-driver では、自動生成された _id フィールドによってドキュメントを検索できます。ただし、_id フィールドが bson.RawValue として提供される場合、問題が発生する可能性があります。

_id に bson.RawValue を使用する

提供されたコード スニペットは、bson.RawValue を使用してドキュメントを検索しようとします。オブジェクトを返しますが、何も返しません。これを修正するには、primitive.ObjectIDFromHex を使用して RawValue を ObjectID に変換します。

<code class="go">import (
    "context"
    "encoding/hex"
    "encoding/json"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/bson/bsoncodec"
    "go.mongodb.org/mongo-driver/bson/bsonprimitive"
    "go.mongodb.org/mongo-driver/mongo"
)

func findDocumentByID(collection *mongo.Collection, ctx context.Context, id string) (*bson.Raw, error) {
    objID, err := bsonprimitive.ObjectIDFromHex(id)
    if err != nil {
        return nil, err
    }

    value := collection.FindOne(ctx, bson.M{"_id": objID})
    return value.DecodeBytes()
}</code>
ログイン後にコピー

使用例

MongoDB データベース内の次のドキュメントについて考えてみましょう。

<code class="json">{
  "_id": "5c7452c7aeb4c97e0cdb75bf",
  "name": "John Doe",
  "age": 30
}</code>
ログイン後にコピー

上記の関数を使用してこのドキュメントを検索するには、_id を文字列として指定します。

<code class="go">id := "5c7452c7aeb4c97e0cdb75bf"
value, err := findDocumentByID(collection, ctx, id)
if err != nil {
  return nil, err
}</code>
ログイン後にコピー

値変数には、見つかったドキュメントのデコードされたバイトが含まれます。

以上がmongo-go-driver で bson.RawValue を使用して _id でドキュメントを検索する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート