使用 mongo-go-driver 过滤 MongoDB 文档中的字段
MongoDB 查询的关键功能之一是能够过滤字段在查询结果中返回。这称为场投影。
使用场投影进行查询
mongo-go-driver 提供了多个用于指定场投影的选项。一种选择是使用 findopt.Projection 函数。但是,正如您所遇到的,如果未导出投影结构中的字段名称,则此方法可能会失败。要解决此问题,您可以使用以下策略:
方法 1:使用导出的字段名称
最直接的方法是使用导出的字段名称(即,投影结构中以大写字母开头的字段)。这确保了 mongo-go-driver 可以访问字段名称。
type Fields struct { ID int `bson:"_id"` } projection := Fields{ ID: 0, }
方法 2:使用结构标签
或者,您可以使用结构标签将未导出的字段名称映射到相应的 MongoDB 字段
type Fields struct { _id int `bson:"_id"` } projection := Fields{ _id: 0, }
在查询中使用投影
定义投影后,可以通过设置 SetProjection 在 FindOne 或 Find 方法中使用它选项。
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) result := staCon.collection.FindOne(nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
使用示例bson.M
从 mongo-go-driver 的更高版本开始,您还可以使用简单的 bson.M 地图指定投影。
options.FindOne().SetProjection(bson.M{"_id": 0})
以上是如何使用 mongo-go-driver 有效过滤 MongoDB 字段?的详细内容。更多信息请关注PHP中文网其他相关文章!