From 4261e9ff6f73bf055836e3805ca07af12485ce8b Mon Sep 17 00:00:00 2001 From: Valeri Karpov Date: Fri, 9 Feb 2024 17:33:27 -0500 Subject: [PATCH] fix(plugins): avoid converting array to object when tracking atomics within a transaction Re: #14340 --- lib/plugins/trackTransaction.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/plugins/trackTransaction.js b/lib/plugins/trackTransaction.js index 1a409a026eb..5920555324c 100644 --- a/lib/plugins/trackTransaction.js +++ b/lib/plugins/trackTransaction.js @@ -85,7 +85,12 @@ function mergeAtomics(destination, source) { destination.$addToSet = (destination.$addToSet || []).concat(source.$addToSet); } if (source.$set != null) { - destination.$set = Object.assign(destination.$set || {}, source.$set); + if (Array.isArray(destination.$set || []) && Array.isArray(source.$set || [])) { + destination.$set = (destination.$set || []).concat(source.$set); + } else { + destination.$set = Object.assign(destination.$set || {}, source.$set); + } + } return destination;