jstests/query_golden/expected_output/complex_match_swap.md
[
{
"_id" : 1,
"z" : 11,
"h" : {
"i" : 11
},
"b" : {
"c" : 42
}
},
{
"_id" : 2,
"z" : 12,
"h" : {
"i" : 12
},
"b" : { }
},
{
"_id" : 3,
"z" : 13,
"h" : {
"i" : 13
},
"b" : {
"c" : null
}
},
{
"_id" : 4,
"z" : 14,
"h" : {
"i" : 14
},
"b" : {
"c" : 42,
"d" : "foo"
}
},
{
"_id" : 5,
"z" : 15,
"h" : {
"i" : 15
},
"b" : {
"c" : {
"e" : 42,
"f" : "bar"
}
}
},
{
"_id" : 6,
"z" : 16,
"h" : {
"i" : 16
},
"b" : {
"c" : {
"e" : 42,
"f" : {
"g" : 9
}
},
"d" : "foo"
}
}
]
[ { "$project" : { "_id" : 1, "a" : "$b.c", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_id" : 1, "a" : 42, "z" : 11 }
{ "_id" : 4, "a" : 42, "z" : 14 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c"
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "a" : 42, "z" : 11 }
{ "a" : 42, "z" : 14 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$project" : {
"z" : true,
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "a" : 42 }
{ "a" : 42 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$project" : {
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$project" : { "_id" : 0, "z" : 0 } }, { "$project" : { "a" : "$b.c" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "a" : 42 }
{ "a" : 42 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$project" : {
"_id" : false,
"z" : false
}
},
{
"$project" : {
"_id" : true,
"a" : "$b.c"
}
}
]
[ { "$addFields" : { "a" : "$b.c" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_id" : 1, "a" : 42, "b" : { "c" : 42 }, "h" : { "i" : 11 }, "z" : 11 }
{ "_id" : 4, "a" : 42, "b" : { "c" : 42, "d" : "foo" }, "h" : { "i" : 14 }, "z" : 14 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$addFields" : {
"a" : "$b.c"
}
}
]
[ { "$set" : { "a" : "$b.c" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_id" : 1, "a" : 42, "b" : { "c" : 42 }, "h" : { "i" : 11 }, "z" : 11 }
{ "_id" : 4, "a" : 42, "b" : { "c" : 42, "d" : "foo" }, "h" : { "i" : 14 }, "z" : 14 }
[
{
"$match" : {
"b.c" : {
"$eq" : 42
}
}
},
{
"$set" : {
"a" : "$b.c"
}
}
]
[ { "$project" : { "_id" : 1, "a" : "$b.c", "z" : 1 } }, { "$match" : { "a.e" : { "$eq" : 42 } } } ]
{ "_id" : 5, "a" : { "e" : 42, "f" : "bar" }, "z" : 15 }
{ "_id" : 6, "a" : { "e" : 42, "f" : { "g" : 9 } }, "z" : 16 }
[
{
"$match" : {
"b.c.e" : {
"$eq" : 42
}
}
},
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c"
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c", "z" : 1 } }, { "$match" : { "a.e" : { "$gte" : 42 } } } ]
{ "a" : { "e" : 42, "f" : "bar" }, "z" : 15 }
{ "a" : { "e" : 42, "f" : { "g" : 9 } }, "z" : 16 }
[
{
"$match" : {
"b.c.e" : {
"$gte" : 42
}
}
},
{
"$project" : {
"z" : true,
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c" } }, { "$match" : { "a.e" : { "$type" : "number" } } } ]
{ "a" : { "e" : 42, "f" : "bar" } }
{ "a" : { "e" : 42, "f" : { "g" : 9 } } }
[
{
"$match" : {
"b.c.e" : {
"$type" : [
"number"
]
}
}
},
{
"$project" : {
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$project" : { "_id" : 0, "z" : 0 } }, { "$project" : { "a" : "$b.c" } }, { "$match" : { "a.e" : { "$mod" : [ 7, 0 ] } } } ]
{ "a" : { "e" : 42, "f" : "bar" } }
{ "a" : { "e" : 42, "f" : { "g" : 9 } } }
[
{
"$match" : {
"b.c.e" : {
"$mod" : [
NumberLong(7),
NumberLong(0)
]
}
}
},
{
"$project" : {
"_id" : false,
"z" : false
}
},
{
"$project" : {
"_id" : true,
"a" : "$b.c"
}
}
]
[ { "$addFields" : { "a" : "$b.c" } }, { "$match" : { "a.e" : { "$eq" : 42 } } } ]
{ "_id" : 5, "a" : { "e" : 42, "f" : "bar" }, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : { "e" : 42, "f" : { "g" : 9 } }, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
[
{
"$match" : {
"b.c.e" : {
"$eq" : 42
}
}
},
{
"$addFields" : {
"a" : "$b.c"
}
}
]
[ { "$set" : { "a" : "$b.c" } }, { "$match" : { "a.e" : { "$lte" : 42 } } } ]
{ "_id" : 5, "a" : { "e" : 42, "f" : "bar" }, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : { "e" : 42, "f" : { "g" : 9 } }, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
[
{
"$match" : {
"b.c.e" : {
"$lte" : 42
}
}
},
{
"$set" : {
"a" : "$b.c"
}
}
]
[ { "$project" : { "_id" : 0, "n" : "$b.c" } }, { "$addFields" : { "q" : "$n.f" } }, { "$set" : { "r" : "$q.g" } }, { "$match" : { "r" : { "$eq" : 9 } } } ]
{ "n" : { "e" : 42, "f" : { "g" : 9 } }, "q" : { "g" : 9 }, "r" : 9 }
[
{
"$match" : {
"b.c.f.g" : {
"$eq" : 9
}
}
},
{
"$project" : {
"n" : "$b.c",
"_id" : false
}
},
{
"$addFields" : {
"q" : "$n.f"
}
},
{
"$set" : {
"r" : "$q.g"
}
}
]
[ { "$project" : { "n" : "$b.c", "q" : "$h.i" } }, { "$match" : { "$or" : [ { "n" : { "$gt" : 15 } }, { "q" : { "$lt" : 13 } } ] } } ]
{ "_id" : 1, "n" : 42, "q" : 11 }
{ "_id" : 2, "q" : 12 }
{ "_id" : 4, "n" : 42, "q" : 14 }
[
{
"$match" : {
"$or" : [
{
"b.c" : {
"$gt" : 15
}
},
{
"h.i" : {
"$lt" : 13
}
}
]
}
},
{
"$project" : {
"_id" : true,
"n" : "$b.c",
"q" : "$h.i"
}
}
]
[ { "$project" : { "n" : "$b.c", "h" : 1 } }, { "$addFields" : { "q" : "$h.i" } }, { "$project" : { "h" : 0 } }, { "$match" : { "$or" : [ { "n" : { "$gt" : 15 } }, { "q" : { "$lt" : 13 } } ] } } ]
{ "_id" : 1, "n" : 42, "q" : 11 }
{ "_id" : 2, "q" : 12 }
{ "_id" : 4, "n" : 42, "q" : 14 }
[
{
"$match" : {
"$or" : [
{
"b.c" : {
"$gt" : 15
}
},
{
"h.i" : {
"$lt" : 13
}
}
]
}
},
{
"$project" : {
"_id" : true,
"h" : true,
"n" : "$b.c"
}
},
{
"$addFields" : {
"q" : "$h.i"
}
},
{
"$project" : {
"h" : false,
"_id" : true
}
}
]
[ { "$group" : { "_id" : { "z" : "$z" } } }, { "$match" : { "_id.z" : { "$lte" : 14 } } } ]
{ "_id" : { "z" : 11 } }
{ "_id" : { "z" : 12 } }
{ "_id" : { "z" : 13 } }
{ "_id" : { "z" : 14 } }
[
{
"$match" : {
"z" : {
"$lte" : 14
}
}
},
{
"$group" : {
"_id" : {
"z" : "$z"
},
"$willBeMerged" : false
}
}
]
[ { "$lookup" : { "from" : "complex_match_swap", "pipeline" : [ { "$group" : { "_id" : "$a", "b" : { "$push" : "$b" } } } ], "as" : "arr" } }, { "$project" : { "c" : "$arr.b" } }, { "$match" : { "c" : { "$eq" : { } } } } ]
{ "_id" : 1, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
{ "_id" : 2, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
{ "_id" : 3, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
{ "_id" : 4, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
{ "_id" : 5, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
{ "_id" : 6, "c" : [ [ { "c" : 42 }, { }, { "c" : null }, { "c" : 42, "d" : "foo" }, { "c" : { "e" : 42, "f" : "bar" } }, { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" } ] ] }
[
{
"$lookup" : {
"from" : "complex_match_swap",
"as" : "arr",
"let" : { },
"pipeline" : [
{
"$group" : {
"_id" : "$a",
"b" : {
"$push" : "$b"
}
}
}
]
}
},
{
"$match" : {
"arr.b" : {
"$eq" : { }
}
}
},
{
"$project" : {
"_id" : true,
"c" : "$arr.b"
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c", "z" : 1 } }, { "$match" : { "a" : { "$exists" : true } } } ]
{ "a" : 42, "z" : 11 }
{ "a" : 42, "z" : 14 }
{ "a" : null, "z" : 13 }
{ "a" : { "e" : 42, "f" : "bar" }, "z" : 15 }
{ "a" : { "e" : 42, "f" : { "g" : 9 } }, "z" : 16 }
[
{
"$match" : {
"b.c" : {
"$exists" : true
}
}
},
{
"$project" : {
"z" : true,
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c", "z" : 1 } }, { "$match" : { "$expr" : { "$eq" : [ "$a", 42 ] } } } ]
{ "a" : 42, "z" : 11 }
{ "a" : 42, "z" : 14 }
[
{
"$match" : {
"$and" : [
{
"b.c" : {
"$_internalExprEq" : 42
}
},
{
"$expr" : {
"$eq" : [
"$b.c",
{
"$const" : 42
}
]
}
}
]
}
},
{
"$project" : {
"z" : true,
"a" : "$b.c",
"_id" : false
}
}
]
[ { "$replaceRoot" : { "newRoot" : "$b" } }, { "$match" : { "c" : { "$eq" : 42 } } } ]
{ "c" : 42 }
{ "c" : 42, "d" : "foo" }
[
{
"$match" : {
"$or" : [
{
"b" : {
"$type" : [
4
]
}
},
{
"b" : {
"$not" : {
"$type" : [
3
]
}
}
},
{
"b.c" : {
"$eq" : 42
}
}
]
}
},
{
"$replaceRoot" : {
"newRoot" : "$b"
}
}
]
[ { "$replaceWith" : "$b" }, { "$match" : { "c" : { "$eq" : 42 } } } ]
{ "c" : 42 }
{ "c" : 42, "d" : "foo" }
[
{
"$match" : {
"$or" : [
{
"b" : {
"$type" : [
4
]
}
},
{
"b" : {
"$not" : {
"$type" : [
3
]
}
}
},
{
"b.c" : {
"$eq" : 42
}
}
]
}
},
{
"$replaceRoot" : {
"newRoot" : "$b"
}
}
]
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y" : { "$lte" : 42 } } } ]
{ "x" : { "y" : 42 }, "z" : 11 }
{ "x" : { "y" : 42 }, "z" : 14 }
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y" : {
"$lte" : 42
}
}
}
]
[ { "$project" : { "_id" : 0, "x.y" : "$b.c", "z" : 1 } }, { "$match" : { "x.y.e" : { "$lte" : 42 } } } ]
{ "x" : { "y" : { "e" : 42, "f" : "bar" } }, "z" : 15 }
{ "x" : { "y" : { "e" : 42, "f" : { "g" : 9 } } }, "z" : 16 }
[
{
"$project" : {
"z" : true,
"x" : {
"y" : "$b.c"
},
"_id" : false
}
},
{
"$match" : {
"x.y.e" : {
"$lte" : 42
}
}
}
]
[ { "$project" : { "_id" : 0, "n.q.r" : "$b.c", "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
[ { "$project" : { "_id" : 0, "n" : { "q" : { "r" : "$b.c" } }, "z" : 1 } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
{ "n" : { "q" : { "r" : { "e" : 42, "f" : "bar" } } }, "z" : 15 }
{ "n" : { "q" : { "r" : { "e" : 42, "f" : { "g" : 9 } } } }, "z" : 16 }
[
{
"$project" : {
"z" : true,
"n" : {
"q" : {
"r" : "$b.c"
}
},
"_id" : false
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
[ { "$addFields" : { "n" : { "q" : { "r" : "$b.c" } } } }, { "$match" : { "n.q.r.e" : { "$lte" : 42 } } } ]
{ "_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 }
[
{
"$addFields" : {
"n" : {
"q" : {
"r" : "$b.c"
}
}
}
},
{
"$match" : {
"n.q.r.e" : {
"$lte" : 42
}
}
}
]
[ { "$project" : { "a" : { "$cond" : { "if" : { "$eq" : [ null, "$b.c" ] }, "then" : "$$REMOVE", "else" : "$b.c" } } } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_id" : 1, "a" : 42 }
{ "_id" : 4, "a" : 42 }
[
{
"$project" : {
"_id" : true,
"a" : {
"$cond" : [
{
"$eq" : [
{
"$const" : null
},
"$b.c"
]
},
"$$REMOVE",
"$b.c"
]
}
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$project" : { "_id" : 1, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_id" : 5, "a" : 42, "z" : 15 }
{ "_id" : 6, "a" : 42, "z" : 16 }
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c.e", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "a" : 42, "z" : 15 }
{ "a" : 42, "z" : 16 }
[
{
"$project" : {
"z" : true,
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$project" : { "_id" : 0, "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "a" : 42 }
{ "a" : 42 }
[
{
"$project" : {
"a" : "$b.c.e",
"_id" : false
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$addFields" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_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 }
[
{
"$addFields" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$set" : { "a" : "$b.c.e" } }, { "$match" : { "a" : { "$eq" : 42 } } } ]
{ "_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 }
[
{
"$set" : {
"a" : "$b.c.e"
}
},
{
"$match" : {
"a" : {
"$eq" : 42
}
}
}
]
[ { "$project" : { "a" : "$b.c.f.g", "z" : 1 } }, { "$match" : { "a" : { "$eq" : 9 } } } ]
{ "_id" : 6, "a" : 9, "z" : 16 }
[
{
"$project" : {
"_id" : true,
"z" : true,
"a" : "$b.c.f.g"
}
},
{
"$match" : {
"a" : {
"$eq" : 9
}
}
}
]
[ { "$group" : { "_id" : { "x" : "$b.c" } } }, { "$match" : { "_id.x.e" : { "$lte" : 42 } } } ]
{ "_id" : { "x" : { "e" : 42, "f" : "bar" } } }
{ "_id" : { "x" : { "e" : 42, "f" : { "g" : 9 } } } }
[
{
"$group" : {
"_id" : {
"x" : "$b.c"
},
"$willBeMerged" : false
}
},
{
"$match" : {
"_id.x.e" : {
"$lte" : 42
}
}
}
]
[ { "$addFields" : { "a.d" : "$c" } }, { "$match" : { "a.e" : null } } ]
{ "_id" : 1, "a" : { }, "b" : { "c" : 42 }, "h" : { "i" : 11 }, "z" : 11 }
{ "_id" : 2, "a" : { }, "b" : { }, "h" : { "i" : 12 }, "z" : 12 }
{ "_id" : 3, "a" : { }, "b" : { "c" : null }, "h" : { "i" : 13 }, "z" : 13 }
{ "_id" : 4, "a" : { }, "b" : { "c" : 42, "d" : "foo" }, "h" : { "i" : 14 }, "z" : 14 }
{ "_id" : 5, "a" : { }, "b" : { "c" : { "e" : 42, "f" : "bar" } }, "h" : { "i" : 15 }, "z" : 15 }
{ "_id" : 6, "a" : { }, "b" : { "c" : { "e" : 42, "f" : { "g" : 9 } }, "d" : "foo" }, "h" : { "i" : 16 }, "z" : 16 }
[
{
"$addFields" : {
"a" : {
"d" : "$c"
}
}
},
{
"$match" : {
"a.e" : {
"$eq" : null
}
}
}
]