1 回答
TA贡献1725条经验 获得超7个赞
我想更新数据库中的一些字段并希望它返回一些字段,
如果您使用mongo-go-driver(当前为 v1.1),您可以使用FindOneAndUpdate()来查找单个文档并更新它,返回原始文档或更新后的文档。
该方法接受FindOneAndUpdateOptions的参数,它支持投影。例如:
collection := client.Database("dbName").Collection("collName")
// Sets projection (or return fields)
findUpdateOptions := options.FindOneAndUpdateOptions{}
findUpdateOptions.SetProjection(bson.M{"order_id": 1})
result := collection.FindOneAndUpdate(context.TODO(),
bson.M{"foo":1},
bson.M{"$set": bson.M{"bar":1}},
&findUpdateOptions)
doc := bson.M{}
err = result.Decode(&doc)
上面的查询将匹配字段foo
为 1 的文档,将字段更新为 1,并仅作为结果bar
返回。order_id
请注意,默认情况下_id
也会返回该字段。您可以通过将_id 字段设置为 0 来禁止投影。
请注意,返回类型FindOneAndUpdate
是SingleResult对象,它表示从操作返回的单个文档。如果操作返回错误,则Err
SingleResult 的方法将返回该错误。
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报