Dalam mongo-go-driver, anda boleh mencari dokumen melalui medan _id yang dijana secara automatik. Walau bagaimanapun, isu mungkin timbul apabila medan _id disediakan sebagai bson.RawValue.
Coretan kod yang disediakan cuba mencari dokumen menggunakan bson.RawValue objek, tetapi ia tidak mengembalikan apa-apa. Untuk membetulkan ini, tukar RawValue kepada ObjectID menggunakan primitive.ObjectIDFromHex.
<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>
Pertimbangkan dokumen berikut dalam pangkalan data MongoDB anda:
<code class="json">{ "_id": "5c7452c7aeb4c97e0cdb75bf", "name": "John Doe", "age": 30 }</code>
Untuk mencari dokumen ini menggunakan fungsi di atas, berikan _id sebagai rentetan:
<code class="go">id := "5c7452c7aeb4c97e0cdb75bf" value, err := findDocumentByID(collection, ctx, id) if err != nil { return nil, err }</code>
Pembolehubah nilai kini akan mengandungi bait yang dinyahkod bagi dokumen yang ditemui.
Atas ialah kandungan terperinci Bagaimana Mencari Dokumen dengan _id Menggunakan bson.RawValue dalam mongo-go-driver?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!