Commit 8db23cb62ad243d9864417d783b522c453dc4b43
1 parent
7cf63b79
fix: 批量删除装备 mongodb deletemany的问题
Showing
4 changed files
with
19 additions
and
6 deletions
Show diff stats
cmd/gameserver/action/RoleAction.go
| @@ -173,10 +173,7 @@ func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, in | @@ -173,10 +173,7 @@ func EquipmentDelRpc(role *models.RoleModel, msg components.IMessage) (int32, in | ||
| 173 | logger.Error("loginRpc err: %v", err) | 173 | logger.Error("loginRpc err: %v", err) |
| 174 | return 1, nil | 174 | return 1, nil |
| 175 | } | 175 | } |
| 176 | - filter := make(bson.D, 5) | ||
| 177 | - for _, id := range req.Id { | ||
| 178 | - filter = append(filter, bson.E{Key: "id", Value: id}) | ||
| 179 | - } | 176 | + filter := bson.D{{"id", bson.D{{"$in", req.Id}}}} |
| 180 | if err := mongoproxy.DelMany("equipment", filter); err != nil { | 177 | if err := mongoproxy.DelMany("equipment", filter); err != nil { |
| 181 | logger.Error(err.Error()) | 178 | logger.Error(err.Error()) |
| 182 | return 2, nil | 179 | return 2, nil |
cmd/gameserver/action/RoleAction_test.go
| @@ -2,8 +2,10 @@ package action | @@ -2,8 +2,10 @@ package action | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "go.mongodb.org/mongo-driver/bson" | ||
| 5 | "math/rand" | 6 | "math/rand" |
| 6 | "pro2d/common" | 7 | "pro2d/common" |
| 8 | + "pro2d/common/db/mongoproxy" | ||
| 7 | "pro2d/common/db/redisproxy" | 9 | "pro2d/common/db/redisproxy" |
| 8 | "pro2d/common/logger" | 10 | "pro2d/common/logger" |
| 9 | "testing" | 11 | "testing" |
| @@ -20,3 +22,16 @@ func TestGetActionMap(t *testing.T) { | @@ -20,3 +22,16 @@ func TestGetActionMap(t *testing.T) { | ||
| 20 | name := getRandomName() | 22 | name := getRandomName() |
| 21 | fmt.Println(name) | 23 | fmt.Println(name) |
| 22 | } | 24 | } |
| 25 | + | ||
| 26 | +func TestEquipmentDelRpc(t *testing.T) { | ||
| 27 | + err := mongoproxy.ConnectMongo(common.GlobalConf.GameConf.MongoConf, common.GlobalConf.GameConf.ID) | ||
| 28 | + if err != nil { | ||
| 29 | + logger.Error(err) | ||
| 30 | + return | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + filter := bson.D{{"id", bson.D{{"$in", bson.A{"10000020021", "10000020037"}}}}} | ||
| 34 | + if err := mongoproxy.DelMany("equipment", filter); err != nil { | ||
| 35 | + logger.Error(err.Error()) | ||
| 36 | + } | ||
| 37 | +} |
common/db/mongoproxy/mongoplugin.go
| @@ -90,7 +90,8 @@ func DelOne(coll string, key string, value interface{}) error { | @@ -90,7 +90,8 @@ func DelOne(coll string, key string, value interface{}) error { | ||
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | func DelMany(coll string, filter bson.D) error { | 92 | func DelMany(coll string, filter bson.D) error { |
| 93 | - _, err := mongoDatabase.Collection(coll).DeleteMany(context.TODO(), filter, nil) | 93 | + r, err := mongoDatabase.Collection(coll).DeleteMany(context.TODO(), filter, nil) |
| 94 | + logger.Debug(r.DeletedCount) | ||
| 94 | return err | 95 | return err |
| 95 | } | 96 | } |
| 96 | 97 |