使用 GoLang 在 mongodb 中进行事务的示例

我需要一个示例来使用 GoLang 在 MongoDB 中实现事务。

我正在为 mongodb 使用这个 golang 驱动程序

没有关于如何实现事务的明确文档。

谁能帮我?



杨魅力
浏览 336回答 2
2回答

HUX布斯

这可能会令人困惑。下面是一个简单的例子。if session, err = client.StartSession(); err != nil {    t.Fatal(err)}if err = session.StartTransaction(); err != nil {    t.Fatal(err)}if err = mongo.WithSession(ctx, session, func(sc mongo.SessionContext) error {    if result, err = collection.UpdateOne(sc, bson.M{"_id": id}, update); err != nil {        t.Fatal(err)    }    if result.MatchedCount != 1 || result.ModifiedCount != 1 {        t.Fatal("replace failed, expected 1 but got", result.MatchedCount)    }    if err = session.CommitTransaction(sc); err != nil {        t.Fatal(err)    }    return nil}); err != nil {    t.Fatal(err)}session.EndSession(ctx)

偶然的你

这会帮助你ctx := context.Background()client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))if err != nil {    panic(err)}db := client.Database("testdb")defer db.Client().Disconnect(ctx)col := db.Collection("testcol")// transactionerr = db.Client().UseSession(ctx, func(sessionContext mongo.SessionContext) error {    err := sessionContext.StartTransaction()    if err != nil {        return err    }    _, err = col.InsertOne(sessionContext, bson.M{"_id": "1", "name": "berry"})    if err != nil {        return err    }    _, err = col.InsertOne(sessionContext, bson.M{"_id": "2", "name": "gucci"})    if err != nil {        sessionContext.AbortTransaction(sessionContext)        return err    }    if err = session.CommitTransaction(sessionContext); err != nil {        return err    }    return nil})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go