SERVER-110906: Fix incorrect test description in complex match swap test (#41451)

GitOrigin-RevId: a341f68e54a43fd6fea549bee23733a04212f270
This commit is contained in:
HanaPearlman 2025-09-17 15:13:55 -04:00 committed by MongoDB Bot
parent 6740d09120
commit f371d41b4c
2 changed files with 390 additions and 390 deletions

View File

@ -146,6 +146,14 @@ try {
pipeline = [{$project: {_id: 0, a: "$b.c", z: 1}}, {$match: {$expr: {$eq: ["$a", 42]}}}]; pipeline = [{$project: {_id: 0, a: "$b.c", z: 1}}, {$match: {$expr: {$eq: ["$a", 42]}}}];
runPipeline(testCaseName, pipeline); runPipeline(testCaseName, pipeline);
testCaseName = "$match can be pushed beneath $replaceRoot";
pipeline = [{$replaceRoot: {newRoot: "$b"}}, {$match: {c: {$eq: 42}}}];
runPipeline(testCaseName, pipeline);
testCaseName = "$match can be pushed beneath $replaceWith";
pipeline = [{$replaceWith: "$b"}, {$match: {c: {$eq: 42}}}];
runPipeline(testCaseName, pipeline);
// //
// The remaining test cases are negative tests, meaning that we do not expect the $match to be // The remaining test cases are negative tests, meaning that we do not expect the $match to be
// pushed down. // pushed down.
@ -201,14 +209,6 @@ try {
pipeline = [{$project: {a: "$b.c.f.g", z: 1}}, {$match: {a: {$eq: 9}}}]; pipeline = [{$project: {a: "$b.c.f.g", z: 1}}, {$match: {a: {$eq: 9}}}];
runPipeline(testCaseName, pipeline); runPipeline(testCaseName, pipeline);
testCaseName = "Negative case: $match cannot be pushed beneath $replaceRoot";
pipeline = [{$replaceRoot: {newRoot: "$b"}}, {$match: {c: {$eq: 42}}}];
runPipeline(testCaseName, pipeline);
testCaseName = "Negative case: $match cannot be pushed beneath $replaceWith";
pipeline = [{$replaceWith: "$b"}, {$match: {c: {$eq: 42}}}];
runPipeline(testCaseName, pipeline);
testCaseName = "Negative case: $match cannot swap past complex rename when matching on subfield of $group key"; testCaseName = "Negative case: $match cannot swap past complex rename when matching on subfield of $group key";
pipeline = [{$group: {_id: {x: "$b.c"}}}, {$match: {"_id.x.e": {$lte: 42}}}]; pipeline = [{$group: {_id: {x: "$b.c"}}}, {$match: {"_id.x.e": {$lte: 42}}}];
runPipeline(testCaseName, pipeline); runPipeline(testCaseName, pipeline);

View File

@ -731,387 +731,7 @@
] ]
``` ```
## 21. Negative case: Dotted path on the left and the right ## 21. $match can be pushed beneath $replaceRoot
### Pipeline
```json
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "x" : { "y" : 42 }, "z" : 11 }
{ "x" : { "y" : 42 }, "z" : 14 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y" : {
"$lte" : 42
}
}
}
]
```
## 22. Negative case: Dotted path on the left and the right with match on a subpath of the renamed path
### Pipeline
```json
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "x" : { "y" : { "e" : 42, "f" : "bar" } }, "z" : 15 }
{ "x" : { "y" : { "e" : 42, "f" : { "g" : 9 } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y.e" : {
"$lte" : 42
}
}
}
]
```
## 23. Negative case: Dotted path of length 3 on the left
### Pipeline
```json
[ { "$project" : { "_id" : 0, "n.q.r" : "$b.c", "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 24. Negative case: Dotted path of length 3 on the left, expressed with nested objects
### Pipeline
```json
[ { "$project" : { "_id" : 0, "n" : { "q" : { "r" : "$b.c" } }, "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 25. Negative case: Dotted path of length 3 on the left, expressed with nested objects and $addFields
### Pipeline
```json
[ { "$addFields" : { "n" : { "q" : { "r" : "$b.c" } } } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "_id" : 6, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$addFields" : {
"n" : {
"q" : {
"r" : "$b.c"
}
}
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 26. Negative case: conditional projection
### Pipeline
```json
[ { "$project" : { "a" : { "$cond" : { "if" : { "$eq" : [ null, "$b.c" ] }, "then" : "$$REMOVE", "else" : "$b.c" } } } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 1, "a" : 42 }
{ "_id" : 4, "a" : 42 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"a" : {
"$cond" : [
{
"$eq" : [
{
"$const" : null
},
"$b.c"
]
},
"$$REMOVE",
"$b.c"
]
}
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 27. Negative case: field path of length 3
### Pipeline
```json
[ { "$project" : { "_id" : 1, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "z" : 15 }
{ "_id" : 6, "a" : 42, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 28. Negative case: field path of length 3 with _id excluded (variation 1)
### Pipeline
```json
[ { "$project" : { "_id" : 0, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "a" : 42, "z" : 15 }
{ "a" : 42, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 29. Negative case: field path of length 3 with _id excluded (variation 2)
### Pipeline
```json
[ { "$project" : { "_id" : 0, "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "a" : 42 }
{ "a" : 42 }
```
### Explain
```json
[
{
"$project" : {
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 30. Negative case: $addFields with field path of length 3
### Pipeline
```json
[ { "$addFields" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : 42, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
```
### Explain
```json
[
{
"$addFields" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 31. Negative case: $set with field path of length 3
### Pipeline
```json
[ { "$set" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : 42, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
```
### Explain
```json
[
{
"$set" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 32. Negative case: field path of length 4
### Pipeline
```json
[ { "$project" : { "a" : "$b.c.f.g", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 9 } } } ]
```
### Results
```json
{ "_id" : 6, "a" : 9, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.f.g"
}
},
{
"$match" : {
"a" : {
"$eq" : 9
}
}
}
]
```
## 33. Negative case: $match cannot be pushed beneath $replaceRoot
### Pipeline ### Pipeline
```json ```json
[ { "$replaceRoot" : { "newRoot" : "$b" } }, { "$match" : { "c" : { "$eq" : 42 } } } ] [ { "$replaceRoot" : { "newRoot" : "$b" } }, { "$match" : { "c" : { "$eq" : 42 } } } ]
@ -1159,7 +779,7 @@
] ]
``` ```
## 34. Negative case: $match cannot be pushed beneath $replaceWith ## 22. $match can be pushed beneath $replaceWith
### Pipeline ### Pipeline
```json ```json
[ { "$replaceWith" : "$b" }, { "$match" : { "c" : { "$eq" : 42 } } } ] [ { "$replaceWith" : "$b" }, { "$match" : { "c" : { "$eq" : 42 } } } ]
@ -1207,6 +827,386 @@
] ]
``` ```
## 23. Negative case: Dotted path on the left and the right
### Pipeline
```json
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "x" : { "y" : 42 }, "z" : 11 }
{ "x" : { "y" : 42 }, "z" : 14 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y" : {
"$lte" : 42
}
}
}
]
```
## 24. Negative case: Dotted path on the left and the right with match on a subpath of the renamed path
### Pipeline
```json
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "x" : { "y" : { "e" : 42, "f" : "bar" } }, "z" : 15 }
{ "x" : { "y" : { "e" : 42, "f" : { "g" : 9 } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y.e" : {
"$lte" : 42
}
}
}
]
```
## 25. Negative case: Dotted path of length 3 on the left
### Pipeline
```json
[ { "$project" : { "_id" : 0, "n.q.r" : "$b.c", "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 26. Negative case: Dotted path of length 3 on the left, expressed with nested objects
### Pipeline
```json
[ { "$project" : { "_id" : 0, "n" : { "q" : { "r" : "$b.c" } }, "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 27. Negative case: Dotted path of length 3 on the left, expressed with nested objects and $addFields
### Pipeline
```json
[ { "$addFields" : { "n" : { "q" : { "r" : "$b.c" } } } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "_id" : 6, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
```
### Explain
```json
[
{
"$addFields" : {
"n" : {
"q" : {
"r" : "$b.c"
}
}
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
```
## 28. Negative case: conditional projection
### Pipeline
```json
[ { "$project" : { "a" : { "$cond" : { "if" : { "$eq" : [ null, "$b.c" ] }, "then" : "$$REMOVE", "else" : "$b.c" } } } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 1, "a" : 42 }
{ "_id" : 4, "a" : 42 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"a" : {
"$cond" : [
{
"$eq" : [
{
"$const" : null
},
"$b.c"
]
},
"$$REMOVE",
"$b.c"
]
}
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 29. Negative case: field path of length 3
### Pipeline
```json
[ { "$project" : { "_id" : 1, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "z" : 15 }
{ "_id" : 6, "a" : 42, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 30. Negative case: field path of length 3 with _id excluded (variation 1)
### Pipeline
```json
[ { "$project" : { "_id" : 0, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "a" : 42, "z" : 15 }
{ "a" : 42, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"z" : true,
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 31. Negative case: field path of length 3 with _id excluded (variation 2)
### Pipeline
```json
[ { "$project" : { "_id" : 0, "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "a" : 42 }
{ "a" : 42 }
```
### Explain
```json
[
{
"$project" : {
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 32. Negative case: $addFields with field path of length 3
### Pipeline
```json
[ { "$addFields" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : 42, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
```
### Explain
```json
[
{
"$addFields" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 33. Negative case: $set with field path of length 3
### Pipeline
```json
[ { "$set" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
```
### Results
```json
{ "_id" : 5, "a" : 42, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : 42, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
```
### Explain
```json
[
{
"$set" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
```
## 34. Negative case: field path of length 4
### Pipeline
```json
[ { "$project" : { "a" : "$b.c.f.g", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 9 } } } ]
```
### Results
```json
{ "_id" : 6, "a" : 9, "z" : 16 }
```
### Explain
```json
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.f.g"
}
},
{
"$match" : {
"a" : {
"$eq" : 9
}
}
}
]
```
## 35. Negative case: $match cannot swap past complex rename when matching on subfield of $group key ## 35. Negative case: $match cannot swap past complex rename when matching on subfield of $group key
### Pipeline ### Pipeline
```json ```json