From 6ad379b7a745d78d241d6f97428a7ecabf5e7ace Mon Sep 17 00:00:00 2001 From: "IAN.Z" <1274803758@qq.com> Date: Thu, 14 Apr 2022 12:35:54 +0800 Subject: [PATCH] feat: add mongo safe batch update (#1575) Co-authored-by: zhuyin.zhu --- lualib/skynet/db/mongo.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lualib/skynet/db/mongo.lua b/lualib/skynet/db/mongo.lua index 0eb14e8f..a249155b 100644 --- a/lualib/skynet/db/mongo.lua +++ b/lualib/skynet/db/mongo.lua @@ -394,6 +394,21 @@ function mongo_collection:safe_update(selector, update, upsert, multi) return werror(r) end +function mongo_collection:safe_batch_update(updates) + local updates_tb = {} + for i = 1, #updates do + updates_tb[i] = bson_encode({ + q = updates[i].query, + u = updates[i].update, + upsert = updates[i].upsert, + multi = updates[i].multi, + }) + end + + local r = self.database:runCommand("update", self.name, "updates", updates_tb) + return werror(r) +end + function mongo_collection:delete(selector, single) local sock = self.connection.__sock local pack = driver.delete(self.full_name, single, bson_encode(selector))