

[jsTest] ----
[jsTest] Resetting collection. Inserting docs:
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "b" : 1,  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1,  "b" : 1 } }
{  "_id" : 13,  "a" : {  "b" : {   } } }
{  "_id" : 14,  "a" : {  "b" : {  "c" : null } } }
{  "_id" : 15,  "a" : {  "b" : {  "c" : undefined } } }
{  "_id" : 16,  "a" : {  "b" : {  "x" : 1,  "y" : 1 } } }
{  "_id" : 17,  "a" : {  "b" : {  "c" : "str",  "d" : "str",  "e" : "str" },  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {  "b" : 1 },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "b" : null, "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "b" : [ ],  "x" : "str" } }
{  "_id" : 34,  "a" : {  "b" : [ "str" ] } }
{  "_id" : 35,  "a" : {  "b" : [ [ ] ] } }
{  "_id" : 36,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 37,  "a" : {  "b" : [ { "c" : null } ] } }
{  "_id" : 38,  "a" : [ { "b" : { "x" : 1 } } ] }
{  "_id" : 39,  "a" : [ { "b" : [ {  } ] } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], { "b" : 1 } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, { "b" : [ { "cNot" : "str", "d" : 1 }, { "cNot" : "str", "d" : 2 } ] }, { "b" : [ { "c" : 3, "d" : 3 }, { "cNot" : "str", "d" : 4 }, { "c" : 5 } ] } ] }
{  "_id" : 42,  "a" : [ { "b" : { "c" : 2, "d" : 3 }, "e" : 4 }, { "b" : { "c" : 5, "d" : 6 }, "e" : 7 } ] }
{  "_id" : 43,  "a" : {  "b" : [ { "c" : 1, "d" : 1 }, { "c" : 2, "d" : 2 } ] } }
{  "_id" : 44,  "a" : {  "b" : {  "c" : [ 1, 2, { "d" : 3 } ] } } }
{  "_id" : 45,  "a" : [ "str", { "b" : 1 }, { "c" : 1 }, { "b" : 1, "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ { "b" : [ { "c" : 1, "d" : 1 }, { "c" : 2, "d" : 2 } ] }, { "b" : [ { "c" : 3, "d" : 3 }, { "c" : 4, "d" : 4 } ] } ] }
{  "_id" : 47,  "a" : [ { "b" : { "c" : [ 1, { "d" : 1 } ] } }, { "b" : { "c" : [ ] } } ] }
{  "_id" : 48,  "a" : {  "b" : [ { "c" : [ 1, { "d" : 1 } ] }, { "c" : [ ] } ] } }
{  "_id" : 49,  "a" : [ { "b" : [ { "c" : [ 1, 2, 3 ], "d" : 1 }, { "c" : [ 2, 3, 4 ], "d" : 2 } ] }, { "b" : [ { "c" : [ 3, 4, 5 ], "d" : 3 }, { "c" : [ 4, 5, 6 ], "d" : 4 } ] } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ { "b" : [ [ [ { "c" : [ [ [ "str" ] ] ], "d" : "str" } ] ] ] } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ], [ [ { "b" : 1 } ] ], [ { "b" : 1 }, [ { "b" : 2 } ], [ [ { "b" : [ 2 ] } ] ] ] ] }
{  "_id" : 6,  "a" : {  "b" : null,  "c" : 1 } }
{  "_id" : 7,  "a" : {  "b" : undefined,  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }
Collection count: 53

[jsTest] ----
[jsTest] Query: [ { "$project" : { "a" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1 }
{  "_id" : 10 }
{  "_id" : 11,  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12 }
{  "_id" : 13 }
{  "_id" : 14 }
{  "_id" : 15 }
{  "_id" : 16 }
{  "_id" : 17,  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2 }
{  "_id" : 20,  "a.b" : "str" }
{  "_id" : 21 }
{  "_id" : 22,  "x" : "str" }
{  "_id" : 23 }
{  "_id" : 24 }
{  "_id" : 25 }
{  "_id" : 26 }
{  "_id" : 27 }
{  "_id" : 28 }
{  "_id" : 29 }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30 }
{  "_id" : 31 }
{  "_id" : 32 }
{  "_id" : 33 }
{  "_id" : 34 }
{  "_id" : 35 }
{  "_id" : 36 }
{  "_id" : 37 }
{  "_id" : 38 }
{  "_id" : 39 }
{  "_id" : 4,  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40 }
{  "_id" : 41 }
{  "_id" : 42 }
{  "_id" : 43 }
{  "_id" : 44 }
{  "_id" : 45,  "x" : "str" }
{  "_id" : 46 }
{  "_id" : 47 }
{  "_id" : 48 }
{  "_id" : 49 }
{  "_id" : 5 }
{  "_id" : 50 }
{  "_id" : 51 }
{  "_id" : 52 }
{  "_id" : 6 }
{  "_id" : 7 }
{  "_id" : 8 }
{  "_id" : 9 }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a" : 0, "_id" : 0 } } ]
[jsTest] ----

{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{   }
{  "a.b" : "str" }
{  "a.b" : "str",  "abc" : "str" }
{  "a.b.c" : 1 }
{  "b" : "str",  "x" : "str",  "y" : "str" }
{  "x" : "str" }
{  "x" : "str" }
{  "x" : "str" }
{  "x" : "str",  "y" : "str" }
{  "x" : {  "y" : 1,  "z" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a" : 0, "x" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1 }
{  "_id" : 10 }
{  "_id" : 11 }
{  "_id" : 12 }
{  "_id" : 13 }
{  "_id" : 14 }
{  "_id" : 15 }
{  "_id" : 16 }
{  "_id" : 17 }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2 }
{  "_id" : 20,  "a.b" : "str" }
{  "_id" : 21 }
{  "_id" : 22 }
{  "_id" : 23 }
{  "_id" : 24 }
{  "_id" : 25 }
{  "_id" : 26 }
{  "_id" : 27 }
{  "_id" : 28 }
{  "_id" : 29 }
{  "_id" : 3,  "y" : "str" }
{  "_id" : 30 }
{  "_id" : 31 }
{  "_id" : 32 }
{  "_id" : 33 }
{  "_id" : 34 }
{  "_id" : 35 }
{  "_id" : 36 }
{  "_id" : 37 }
{  "_id" : 38 }
{  "_id" : 39 }
{  "_id" : 4,  "b" : "str",  "y" : "str" }
{  "_id" : 40 }
{  "_id" : 41 }
{  "_id" : 42 }
{  "_id" : 43 }
{  "_id" : 44 }
{  "_id" : 45 }
{  "_id" : 46 }
{  "_id" : 47 }
{  "_id" : 48 }
{  "_id" : 49 }
{  "_id" : 5 }
{  "_id" : 50 }
{  "_id" : 51 }
{  "_id" : 52 }
{  "_id" : 6 }
{  "_id" : 7 }
{  "_id" : 8 }
{  "_id" : 9 }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a.b" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1 } }
{  "_id" : 13,  "a" : {   } }
{  "_id" : 14,  "a" : {   } }
{  "_id" : 15,  "a" : {   } }
{  "_id" : 16,  "a" : {   } }
{  "_id" : 17,  "a" : {  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {   },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "x" : "str" } }
{  "_id" : 34,  "a" : {   } }
{  "_id" : 35,  "a" : {   } }
{  "_id" : 36,  "a" : {   } }
{  "_id" : 37,  "a" : {   } }
{  "_id" : 38,  "a" : [ {  } ] }
{  "_id" : 39,  "a" : [ {  } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], {  } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, {  }, {  } ] }
{  "_id" : 42,  "a" : [ { "e" : 4 }, { "e" : 7 } ] }
{  "_id" : 43,  "a" : {   } }
{  "_id" : 44,  "a" : {   } }
{  "_id" : 45,  "a" : [ "str", {  }, { "c" : 1 }, { "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ {  }, {  } ] }
{  "_id" : 47,  "a" : [ {  }, {  } ] }
{  "_id" : 48,  "a" : {   } }
{  "_id" : 49,  "a" : [ {  }, {  } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, {  }, { "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ {  } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", {  }, { "c" : 2 }, "str" ], [ [ {  } ] ], [ {  }, [ {  } ], [ [ {  } ] ] ] ] }
{  "_id" : 6,  "a" : {  "c" : 1 } }
{  "_id" : 7,  "a" : {  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a.b" : 0, "a.c" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {   } }
{  "_id" : 11,  "a" : {  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1 } }
{  "_id" : 13,  "a" : {   } }
{  "_id" : 14,  "a" : {   } }
{  "_id" : 15,  "a" : {   } }
{  "_id" : 16,  "a" : {   } }
{  "_id" : 17,  "a" : {  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {   },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ {  } ] }
{  "_id" : 32,  "a" : [ {  }, {  }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "x" : "str" } }
{  "_id" : 34,  "a" : {   } }
{  "_id" : 35,  "a" : {   } }
{  "_id" : 36,  "a" : {   } }
{  "_id" : 37,  "a" : {   } }
{  "_id" : 38,  "a" : [ {  } ] }
{  "_id" : 39,  "a" : [ {  } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ {  } ] ], {  } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, {  }, {  } ] }
{  "_id" : 42,  "a" : [ { "e" : 4 }, { "e" : 7 } ] }
{  "_id" : 43,  "a" : {   } }
{  "_id" : 44,  "a" : {   } }
{  "_id" : 45,  "a" : [ "str", {  }, {  }, { "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ {  }, {  } ] }
{  "_id" : 47,  "a" : [ {  }, {  } ] }
{  "_id" : 48,  "a" : {   } }
{  "_id" : 49,  "a" : [ {  }, {  } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, {  }, {  }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ {  } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", {  }, {  }, "str" ], [ [ {  } ] ], [ {  }, [ {  } ], [ [ {  } ] ] ] ] }
{  "_id" : 6,  "a" : {   } }
{  "_id" : 7,  "a" : {   } }
{  "_id" : 8,  "a" : {  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a.b.c" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "b" : 1,  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1,  "b" : 1 } }
{  "_id" : 13,  "a" : {  "b" : {   } } }
{  "_id" : 14,  "a" : {  "b" : {   } } }
{  "_id" : 15,  "a" : {  "b" : {   } } }
{  "_id" : 16,  "a" : {  "b" : {  "x" : 1,  "y" : 1 } } }
{  "_id" : 17,  "a" : {  "b" : {  "d" : "str",  "e" : "str" },  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {  "b" : 1 },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "b" : null, "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "b" : [ ],  "x" : "str" } }
{  "_id" : 34,  "a" : {  "b" : [ "str" ] } }
{  "_id" : 35,  "a" : {  "b" : [ [ ] ] } }
{  "_id" : 36,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 37,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 38,  "a" : [ { "b" : { "x" : 1 } } ] }
{  "_id" : 39,  "a" : [ { "b" : [ {  } ] } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], { "b" : 1 } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, { "b" : [ { "cNot" : "str", "d" : 1 }, { "cNot" : "str", "d" : 2 } ] }, { "b" : [ { "d" : 3 }, { "cNot" : "str", "d" : 4 }, {  } ] } ] }
{  "_id" : 42,  "a" : [ { "b" : { "d" : 3 }, "e" : 4 }, { "b" : { "d" : 6 }, "e" : 7 } ] }
{  "_id" : 43,  "a" : {  "b" : [ { "d" : 1 }, { "d" : 2 } ] } }
{  "_id" : 44,  "a" : {  "b" : {   } } }
{  "_id" : 45,  "a" : [ "str", { "b" : 1 }, { "c" : 1 }, { "b" : 1, "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ { "b" : [ { "d" : 1 }, { "d" : 2 } ] }, { "b" : [ { "d" : 3 }, { "d" : 4 } ] } ] }
{  "_id" : 47,  "a" : [ { "b" : {  } }, { "b" : {  } } ] }
{  "_id" : 48,  "a" : {  "b" : [ {  }, {  } ] } }
{  "_id" : 49,  "a" : [ { "b" : [ { "d" : 1 }, { "d" : 2 } ] }, { "b" : [ { "d" : 3 }, { "d" : 4 } ] } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ { "b" : [ [ [ { "d" : "str" } ] ] ] } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ], [ [ { "b" : 1 } ] ], [ { "b" : 1 }, [ { "b" : 2 } ], [ [ { "b" : [ 2 ] } ] ] ] ] }
{  "_id" : 6,  "a" : {  "b" : null,  "c" : 1 } }
{  "_id" : 7,  "a" : {  "b" : undefined,  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a.b.c" : 0, "a.b.d" : 0 } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "b" : 1,  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1,  "b" : 1 } }
{  "_id" : 13,  "a" : {  "b" : {   } } }
{  "_id" : 14,  "a" : {  "b" : {   } } }
{  "_id" : 15,  "a" : {  "b" : {   } } }
{  "_id" : 16,  "a" : {  "b" : {  "x" : 1,  "y" : 1 } } }
{  "_id" : 17,  "a" : {  "b" : {  "e" : "str" },  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {  "b" : 1 },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "b" : null, "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "b" : [ ],  "x" : "str" } }
{  "_id" : 34,  "a" : {  "b" : [ "str" ] } }
{  "_id" : 35,  "a" : {  "b" : [ [ ] ] } }
{  "_id" : 36,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 37,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 38,  "a" : [ { "b" : { "x" : 1 } } ] }
{  "_id" : 39,  "a" : [ { "b" : [ {  } ] } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], { "b" : 1 } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, { "b" : [ { "cNot" : "str" }, { "cNot" : "str" } ] }, { "b" : [ {  }, { "cNot" : "str" }, {  } ] } ] }
{  "_id" : 42,  "a" : [ { "b" : {  }, "e" : 4 }, { "b" : {  }, "e" : 7 } ] }
{  "_id" : 43,  "a" : {  "b" : [ {  }, {  } ] } }
{  "_id" : 44,  "a" : {  "b" : {   } } }
{  "_id" : 45,  "a" : [ "str", { "b" : 1 }, { "c" : 1 }, { "b" : 1, "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ { "b" : [ {  }, {  } ] }, { "b" : [ {  }, {  } ] } ] }
{  "_id" : 47,  "a" : [ { "b" : {  } }, { "b" : {  } } ] }
{  "_id" : 48,  "a" : {  "b" : [ {  }, {  } ] } }
{  "_id" : 49,  "a" : [ { "b" : [ {  }, {  } ] }, { "b" : [ {  }, {  } ] } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ { "b" : [ [ [ {  } ] ] ] } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ], [ [ { "b" : 1 } ] ], [ { "b" : 1 }, [ { "b" : 2 } ], [ [ { "b" : [ 2 ] } ] ] ] ] }
{  "_id" : 6,  "a" : {  "b" : null,  "c" : 1 } }
{  "_id" : 7,  "a" : {  "b" : undefined,  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a" : { "b" : 0 } } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1 } }
{  "_id" : 13,  "a" : {   } }
{  "_id" : 14,  "a" : {   } }
{  "_id" : 15,  "a" : {   } }
{  "_id" : 16,  "a" : {   } }
{  "_id" : 17,  "a" : {  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {   },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "x" : "str" } }
{  "_id" : 34,  "a" : {   } }
{  "_id" : 35,  "a" : {   } }
{  "_id" : 36,  "a" : {   } }
{  "_id" : 37,  "a" : {   } }
{  "_id" : 38,  "a" : [ {  } ] }
{  "_id" : 39,  "a" : [ {  } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], {  } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, {  }, {  } ] }
{  "_id" : 42,  "a" : [ { "e" : 4 }, { "e" : 7 } ] }
{  "_id" : 43,  "a" : {   } }
{  "_id" : 44,  "a" : {   } }
{  "_id" : 45,  "a" : [ "str", {  }, { "c" : 1 }, { "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ {  }, {  } ] }
{  "_id" : 47,  "a" : [ {  }, {  } ] }
{  "_id" : 48,  "a" : {   } }
{  "_id" : 49,  "a" : [ {  }, {  } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, {  }, { "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ {  } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", {  }, { "c" : 2 }, "str" ], [ [ {  } ] ], [ {  }, [ {  } ], [ [ {  } ] ] ] ] }
{  "_id" : 6,  "a" : {  "c" : 1 } }
{  "_id" : 7,  "a" : {  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "a" : { "b.c" : { "d" : 0, "e" : 0 } } } } ]
[jsTest] ----

{  "_id" : 0 }
{  "_id" : 1,  "a" : null }
{  "_id" : 10,  "a" : {  "c" : {  "b" : 1 } } }
{  "_id" : 11,  "a" : {  "b" : 1,  "c" : 1,  "d" : 1 },  "x" : {  "y" : 1,  "z" : 1 } }
{  "_id" : 12,  "a" : {  "_id" : 1,  "b" : 1 } }
{  "_id" : 13,  "a" : {  "b" : {   } } }
{  "_id" : 14,  "a" : {  "b" : {  "c" : null } } }
{  "_id" : 15,  "a" : {  "b" : {  "c" : undefined } } }
{  "_id" : 16,  "a" : {  "b" : {  "x" : 1,  "y" : 1 } } }
{  "_id" : 17,  "a" : {  "b" : {  "c" : "str",  "d" : "str",  "e" : "str" },  "f" : "str" },  "x" : "str" }
{  "_id" : 18,  "a.b.c" : 1 }
{  "_id" : 19,  "a" : "str",  "a.b" : "str",  "abc" : "str" }
{  "_id" : 2,  "a" : undefined }
{  "_id" : 20,  "a" : {  "b" : 1 },  "a.b" : "str" }
{  "_id" : 21,  "a" : {  "bNot" : {  "c" : 1 } } }
{  "_id" : 22,  "a" : [ ],  "x" : "str" }
{  "_id" : 23,  "a" : [ "str" ] }
{  "_id" : 24,  "a" : [ null ] }
{  "_id" : 25,  "a" : [ null, null ] }
{  "_id" : 26,  "a" : [ null, "str" ] }
{  "_id" : 27,  "a" : [ [ ], [ ] ] }
{  "_id" : 28,  "a" : [ [ 1, 2 ] ] }
{  "_id" : 29,  "a" : [ {  }, {  } ] }
{  "_id" : 3,  "x" : "str",  "y" : "str" }
{  "_id" : 30,  "a" : [ { "x" : "str" } ] }
{  "_id" : 31,  "a" : [ { "c" : "str" } ] }
{  "_id" : 32,  "a" : [ { "b" : null, "c" : 1 }, { "c" : 1 }, { "d" : 1 }, "str" ] }
{  "_id" : 33,  "a" : {  "b" : [ ],  "x" : "str" } }
{  "_id" : 34,  "a" : {  "b" : [ "str" ] } }
{  "_id" : 35,  "a" : {  "b" : [ [ ] ] } }
{  "_id" : 36,  "a" : {  "b" : [ {  } ] } }
{  "_id" : 37,  "a" : {  "b" : [ { "c" : null } ] } }
{  "_id" : 38,  "a" : [ { "b" : { "x" : 1 } } ] }
{  "_id" : 39,  "a" : [ { "b" : [ {  } ] } ] }
{  "_id" : 4,  "a" : "str",  "b" : "str",  "x" : "str",  "y" : "str" }
{  "_id" : 40,  "a" : [ [ ], [ [ ], [ ], [ 1 ], [ { "c" : 1 } ] ], { "b" : 1 } ] }
{  "_id" : 41,  "a" : [ { "bNot" : [ { "c" : "str" }, { "c" : "str" } ] }, { "b" : [ { "cNot" : "str", "d" : 1 }, { "cNot" : "str", "d" : 2 } ] }, { "b" : [ { "c" : 3, "d" : 3 }, { "cNot" : "str", "d" : 4 }, { "c" : 5 } ] } ] }
{  "_id" : 42,  "a" : [ { "b" : { "c" : 2, "d" : 3 }, "e" : 4 }, { "b" : { "c" : 5, "d" : 6 }, "e" : 7 } ] }
{  "_id" : 43,  "a" : {  "b" : [ { "c" : 1, "d" : 1 }, { "c" : 2, "d" : 2 } ] } }
{  "_id" : 44,  "a" : {  "b" : {  "c" : [ 1, 2, {  } ] } } }
{  "_id" : 45,  "a" : [ "str", { "b" : 1 }, { "c" : 1 }, { "b" : 1, "c" : 1, "d" : 1 } ],  "x" : "str" }
{  "_id" : 46,  "a" : [ { "b" : [ { "c" : 1, "d" : 1 }, { "c" : 2, "d" : 2 } ] }, { "b" : [ { "c" : 3, "d" : 3 }, { "c" : 4, "d" : 4 } ] } ] }
{  "_id" : 47,  "a" : [ { "b" : { "c" : [ 1, {  } ] } }, { "b" : { "c" : [ ] } } ] }
{  "_id" : 48,  "a" : {  "b" : [ { "c" : [ 1, {  } ] }, { "c" : [ ] } ] } }
{  "_id" : 49,  "a" : [ { "b" : [ { "c" : [ 1, 2, 3 ], "d" : 1 }, { "c" : [ 2, 3, 4 ], "d" : 2 } ] }, { "b" : [ { "c" : [ 3, 4, 5 ], "d" : 3 }, { "c" : [ 4, 5, 6 ], "d" : 4 } ] } ] }
{  "_id" : 5,  "a" : {   } }
{  "_id" : 50,  "a" : [ [ 1, { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ] ] }
{  "_id" : 51,  "a" : [ [ [ { "b" : [ [ [ { "c" : [ [ [ "str" ] ] ], "d" : "str" } ] ] ] } ] ] ] }
{  "_id" : 52,  "a" : [ [ "str", { "b" : 1 }, { "b" : 2, "c" : 2 }, "str" ], [ [ { "b" : 1 } ] ], [ { "b" : 1 }, [ { "b" : 2 } ], [ [ { "b" : [ 2 ] } ] ] ] ] }
{  "_id" : 6,  "a" : {  "b" : null,  "c" : 1 } }
{  "_id" : 7,  "a" : {  "b" : undefined,  "c" : 1 } }
{  "_id" : 8,  "a" : {  "c" : 1,  "d" : 1 } }
{  "_id" : 9,  "a" : {  "d" : 1 } }


[jsTest] ----
[jsTest] Resetting collection. Inserting docs:
[jsTest] ----

{  "_id" : 1,  "x" : 2 }
{  "_id" : {   },  "x" : 1 }
{  "_id" : {  "a" : 1,  "b" : 2,  "c" : 3 },  "x" : 4 }
{  "_id" : {  "a" : 1,  "c" : 2 },  "x" : 3 }
{  "_id" : {  "a" : [ [ { "b" : { "c" : 1 }, "d" : 2 }, 3 ], 4 ],  "e" : 5 },  "x" : 6 }
{  "_id" : {  "a" : {  "b" : {  "c" : 1 },  "d" : 2 },  "e" : 3 },  "x" : 4 }
{  "_id" : {  "x" : 1 },  "y" : 2 }
Collection count: 7

[jsTest] ----
[jsTest] Query: [ { "$project" : { "_id" : 0 } } ]
[jsTest] ----

{  "x" : 1 }
{  "x" : 2 }
{  "x" : 3 }
{  "x" : 4 }
{  "x" : 4 }
{  "x" : 6 }
{  "y" : 2 }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "_id.a" : 0 } } ]
[jsTest] ----

{  "_id" : 1,  "x" : 2 }
{  "_id" : {   },  "x" : 1 }
{  "_id" : {  "b" : 2,  "c" : 3 },  "x" : 4 }
{  "_id" : {  "c" : 2 },  "x" : 3 }
{  "_id" : {  "e" : 3 },  "x" : 4 }
{  "_id" : {  "e" : 5 },  "x" : 6 }
{  "_id" : {  "x" : 1 },  "y" : 2 }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "_id.a" : 0, "_id.b" : 0 } } ]
[jsTest] ----

{  "_id" : 1,  "x" : 2 }
{  "_id" : {   },  "x" : 1 }
{  "_id" : {  "c" : 2 },  "x" : 3 }
{  "_id" : {  "c" : 3 },  "x" : 4 }
{  "_id" : {  "e" : 3 },  "x" : 4 }
{  "_id" : {  "e" : 5 },  "x" : 6 }
{  "_id" : {  "x" : 1 },  "y" : 2 }


[jsTest] ----
[jsTest] Query: [ { "$project" : { "_id.a.b" : 0 } } ]
[jsTest] ----

{  "_id" : 1,  "x" : 2 }
{  "_id" : {   },  "x" : 1 }
{  "_id" : {  "a" : 1,  "b" : 2,  "c" : 3 },  "x" : 4 }
{  "_id" : {  "a" : 1,  "c" : 2 },  "x" : 3 }
{  "_id" : {  "a" : [ [ { "d" : 2 }, 3 ], 4 ],  "e" : 5 },  "x" : 6 }
{  "_id" : {  "a" : {  "d" : 2 },  "e" : 3 },  "x" : 4 }
{  "_id" : {  "x" : 1 },  "y" : 2 }
