首页 > 后端开发 > Golang > 如何在 mongo-go-driver 中使用 bson.RawValue 通过 _id 查找文档?

如何在 mongo-go-driver 中使用 bson.RawValue 通过 _id 查找文档?

Barbara Streisand
发布: 2024-10-31 18:10:48
原创
1100 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板