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

标签 mongodb go

该代码在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中实现这一目标?

最佳答案

我无法评论您的问题,因为我是这里的新贡献者,我现在在我的项目中使用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,确保在模型中。人员具有这样的数据
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})

关于mongodb - 如何在go mongo-driver库中使用Find()。Select()。One(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146476/

相关文章:

java - 如何使用 Java 将 MongoDB 对象 id 转换为 Java Date 或 Instant

Go - 如何格式化数字位数

Golang 结构定义模式

javascript - 如何在与 Sails 0.10.x 的一对多关系中引用关联模型

javascript - Mongodb查询性能?

MongoDB Schema Design 订购服务

performance - Go 中 CSV 和 map 的性能不佳

http - 限制http get的带宽

vue.js - 如何使用VueJS将图像上传到Go服务器

node.js - MongoDB 仅当两个不同字段相同时才匹配 $in