为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 go mongo-driver 库中使用 Find().Select().One()

如何在 go mongo-driver 库中使用 Find().Select().One()

Go
慕标5832272 2022-06-21 10:38:44
此代码在 go mgo 库结果界面中运行良好{}err = getCollection.Find(bson.M{}).Select(bson.M{"_id": 1}).One(&result)但我想使用 go mongo-driver 库执行此操作,我在下面的代码中尝试过,但它不像上面的那样工作err = getCollection.FindOne(ctx, bson.M{}, options.FindOne().SetProjection(bson.M{"_id": 1})).Decode(&result)我的test收集数据是example{"_id":ObjectId(),"Name":"qwert"}有人建议我如何在 mongo-driver 中实现这一目标?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

我无法评论你的问题,因为我是这里的新贡献者,我现在在我的项目中使用 mongo-driver,我试图只获取投影只显示一些字段,你能具体说明第二个过滤的参数吗?


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)

如果这不起作用,那么你应该限制 struct ,确保你的 model.Person 有这样的数据


type Person struct {

  Name   string `json:"name" bson:"name"`

  Gender string `json:"gender" bson:"gender"`

}

或者您可以制作自己的模型来限制字段:


var personLimitOnlyGetName struct {

 Name   string `json:"name" bson:"name"`

}


// please look carefully in your collection field for camelCase

opt.SetProjection(bson.M{"name": 1})


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信