该代码在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/