From 0cb96b92a2bf549c6e8233b68425622f260460bc Mon Sep 17 00:00:00 2001 From: Mohamed Yousef Date: Sun, 11 Aug 2024 02:32:43 +0300 Subject: [PATCH] check if rawDocs[key] and val are instance of Document --- lib/model.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/model.js b/lib/model.js index 808a595811c..da841ae28f7 100644 --- a/lib/model.js +++ b/lib/model.js @@ -4459,7 +4459,7 @@ function _assign(model, vals, mod, assignmentOpts) { } } else { if (_val instanceof Document) { - _val = _val._id; + _val = _val._doc._id; } key = String(_val); if (rawDocs[key]) { @@ -4468,7 +4468,7 @@ function _assign(model, vals, mod, assignmentOpts) { rawOrder[key].push(i); } else if (isVirtual || rawDocs[key].constructor !== val.constructor || - String(rawDocs[key]._id) !== String(val._id)) { + (rawDocs[key] instanceof Document ? String(rawDocs[key]._doc._id) : String(rawDocs[key]._id)) !== (val instanceof Document ? String(val._doc._id) : String(val._id))) { // May need to store multiple docs with the same id if there's multiple models // if we have discriminators or a ref function. But avoid converting to an array // if we have multiple queries on the same model because of `perDocumentLimit` re: gh-9906