首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在go mongo驱动程序库中使用Find().Select().One()

如何在go mongo驱动程序库中使用Find().Select().One()
EN

Stack Overflow用户
提问于 2020-07-29 12:42:42
回答 1查看 1.7K关注 0票数 1

此代码在go mgo库结果接口{}中运行正常

代码语言:javascript
复制
err = getCollection.Find(bson.M{}).Select(bson.M{"_id": 1}).One(&result)

但我想使用go mongo-driver库来执行此操作,我尝试过下面的代码,但它不能像上面的代码那样工作

代码语言:javascript
复制
err = getCollection.FindOne(ctx, bson.M{}, options.FindOne().SetProjection(bson.M{"_id": 1})).Decode(&result)

我的test集合数据是

代码语言:javascript
复制
example{
"_id":ObjectId(),
"Name":"qwert"
}

有人建议我如何在mongo-driver中实现这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 21:25:11

我不能评论你的问题,因为我是新的贡献者,我现在在我的项目中使用mongo-driver,我已经尝试只获取投影只显示一些字段,你能具体的参数秒过滤吗?

代码语言:javascript
复制
var (
   opt options.FindOneOptions
   modelStruct model.Person
)

filter := bson.M{"email": "hello@test.com"}
opt.SetProjection(bson.M{"name": 1})

err := collection.findOne(context.Background(), filter, opt).Decode(&modelStruct)

如果这不起作用,那么您应该限制该结构,确保您的model.Person中包含如下所示的数据

代码语言:javascript
复制
type Person struct {
  Name   string `json:"name" bson:"name"`
  Gender string `json:"gender" bson:"gender"`
}

或者你可以创建自己的模型来限制字段:

代码语言:javascript
复制
var personLimitOnlyGetName struct {
 Name   string `json:"name" bson:"name"`
}

// please look carefully in your collection field for camelCase
opt.SetProjection(bson.M{"name": 1})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63146476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档