此代码在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中实现这一点吗?
发布于 2020-07-29 21:25:11
我不能评论你的问题,因为我是新的贡献者,我现在在我的项目中使用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)如果这不起作用,那么您应该限制该结构,确保您的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})https://stackoverflow.com/questions/63146476
复制相似问题