在 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中文网其他相关文章!