在 mongo-go-driver 中,您可以透過自動產生的 _id 欄位來尋找文件。但是,當 _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中文網其他相關文章!