首页 >后端开发 >Golang >如何使用 mongo-go-driver 有效投影 MongoDB 文档中的字段?

如何使用 mongo-go-driver 有效投影 MongoDB 文档中的字段?

Susan Sarandon
Susan Sarandon原创
2024-12-14 20:04:26661浏览

How to Effectively Project Fields in MongoDB Documents Using the mongo-go-driver?

使用官方 mongo-go-driver 项目 MongoDB 文档中的字段

过滤 MongoDB 文档中的字段对于选择性数据检索和性能优化至关重要。为了实现这一点,官方 mongo-go-driver 提供了灵活的选项。

问题陈述:

尝试使用 findopt.Projection 方法来抑制 a 中的字段MongoDB 文档不成功。尽管使用 fields 结构指定了投影,但该字段在返回的文档中保持不变。

解决方案:

根本原因:用于投影的 fields 结构无法由于未导出字段名称而无法访问其字段。

补救措施:导出结构体的字段名称并使用结构体标签来映射它到相应的 MongoDB 字段(在本例中为 _id)。

这是修改后的代码:

type fields struct {
    ID int `bson:"_id"`
}

s := bson.NewDocument()
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId))

projection := fields{
    ID: 0,
}
result := staCon.collection.FindOne(
    nil, filter, options.FindOne().SetProjection(projection)).Decode(s)

或者,您可以使用 bson.Document 作为投影:

projection := bson.NewDocument(
    bson.EC.Int32("_id", 0),
)
result := staCon.collection.FindOne(
    nil, filter, options.FindOne().SetProjection(projection)).Decode(s)

通过实施这些修改,将实现所需的字段过滤,从而生成带有 _id 字段的文档被压制了。

以上是如何使用 mongo-go-driver 有效投影 MongoDB 文档中的字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn