fix(populate): handle virtual populate underneath document array with justOne=true and sort set where 1 element has only 1 result #12815
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 #12730
Re: #10552
Summary
Strange edge case related to our fix for #10552. Using
resultOrder
only works well if each element ofresultOrder
is a number. Which is if we're populating an array. But if we have arrays, which means we're populating a property under a document array, thennewOrder[_resultOrder] = doc
doesn't work. But unfortunately,resultOrder
's values will be a number if there's only 1 result for that particular document array element. This PR works around that by using the "element under document array" behavior whenever there is an array value inresultOrder
.Examples