在 Golang 中使用 MongoDB 的 findOneAndUpdate() 方法,需要先导入 "go.mongodb.org/mongo-driver/mongo" 包。
下面是一个使用 findOneAndUpdate() 方法更新单个文档的示例:
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
func main() {
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
fmt.Println(err)
return
collection := client.Database("test").Collection("users")
filter := bson.M{"name": "John"}
update := bson.M{"$set": bson.M{"age": 30}}
opts := options.FindOneAndUpdate().SetReturnDocument(options.After)
var result bson.M
err = collection.FindOneAndUpdate(context.TODO(), filter, update, opts).Decode(&result)
if err != nil {
fmt.Println(err)
return
fmt.Println(result)
在上面的代码中,我们使用了 bson.M
和 options.FindOneAndUpdate().SetReturnDocument(options.After)
。这样做会返回更新后的文档。
请注意,如果没有找到匹配的文档,findOneAndUpdate() 方法将返回 "mongo: no documents in result" 错误。