emit an $addFields stage before $sort with safe aliases if necessary #109
+217
−76
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.
This fixes sorting on field names that contain dollar signs or dots. It also provides a framework that we can use to sort on aggregation results.
Unlike
$match
(which has the$expr
operator), the$sort
stage does not have any way to express arbitrary expressions. That is necessary to use the$getField
operator which is what we use to reference field names that need to be escaped. So what this PR does is to inject an$addFields
stage before the$sort
stage if necessary that creates aliases that are safe to use as keys in$sort
.