首页  >  文章  >  后端开发  >  如何在 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