首頁  >  文章  >  後端開發  >  如何在 mongo-go-driver 中使用 bson.RawValue 透過 _id 尋找文件?

如何在 mongo-go-driver 中使用 bson.RawValue 透過 _id 尋找文件?

Barbara Streisand
Barbara Streisand原創
2024-10-31 18:10:481002瀏覽

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 提供時,可能會出現問題。

Using bson.RawValue for _id

提供的程式碼片段嘗試使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn