fix(model+query): handle populate with lean transform that deletes _id
#12193
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #12143
Summary
Right now populate doesn't work if you use
lean: { transform: function myTransform(doc) { ... } }
andmyTransform
deletes_id
. That's because the lean transform runs before populate's_assign()
step, and_assign()
needs_id
(or whatever the foreign field for populate is) to figure out where to put the populated documents.This is similar to #9175, where we had to also remove the foreign field from the projection, and just delete the projected-out field in memory after
_assign()
.Examples