@
JasonLaw err = c.Mongo.Transaction(ctx, func(sc mongo.SessionContext) error {
err = c.BeforeUpdateStatus(sc, body, model.LogStatusForTotalRank)
if err != nil {
return err
}
opts := options.Update().SetUpsert(true)
query := bson.D{bson.E{Key: "_id", Value: util.CreateKeyString(body.Log.Openid, cast.ToString(body.SubArea))}}
scoreIncValue := util.SumSingleLogScore(body.Log)
update := bson.M{"$inc": bson.M{"score": scoreIncValue}}
_, err = c.Mongo.UpdateOne(sc, util.GetMongoDbRankName(),
util.CreateKeyString(model.MongoDbTableGameTotalRankPre, body.Log.TripartiteId), query, update, opts)
if err != nil {
return err
}
err = c.AfterUpdateStatus(sc, body, model.LogStatusForTotalRank)
if err != nil {
return err
}
return nil
}, nil)
我有四个事务,同时修改某一条记录的不同字段