一尘不染

使用GoLang在mongodb中进行交易的示例

go

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

我正在使用此golang驱动程序用于mongodb

https://github.com/mongodb/mongo-go-driver

没有有关如何实现事务的清晰文档。

谁能帮我?


阅读 273

收藏
2020-07-02

共1个答案

一尘不染

可能会造成混乱。以下是一个简单的示例。

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)

您可以在此处查看完整的示例

2020-07-02