Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-18966

Allow exclusion in $project stage of aggregation pipeline

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      Minor Change
    • Sprint:
      Query 11 (03/14/16), Query 12 (04/04/16), Query 13 (04/22/16), Query 14 (05/13/16), Query 15 (06/03/16), Query 16 (06/24/16)

      Description

      There is currently no way to easily specify that project stage keep all fields except for a particular one (with exception of _id).

      This can be helpful to limit the amount of data returned when some aggregation also needs to be done.

      Examples

      // Exclude a single field.
      > db.example.insert([
        {_id: 0, a: 1}
      ]);
      > db.example.aggregate([{$project: {a: 0}}])
      {_id: 0}
      > db.example.aggregate([{$project: {a: false}}])  // Means the same thing as above.
      {_id: 0}
       
      // Exclude a nested field.
      > db.example.drop()
      > db.example.insert([
        {_id: 0, a: {b: 1, c: 1}}
      ]);
      > db.example.aggregate([{$project: {'a.b': 0}}])
      {_id: 0, a: {c: 1}}
      > db.example.aggregate([{$project: {a: {b: 0}}}])  // Means the same thing as above.
      {_id: 0, a: {c: 1}}
       
      // Exclude a nested field from an array.
      > db.example.drop()
      > db.example.insert([
        {_id: 0, a: [{b: 1, c: 1}, {b: 2, c: 2}]}
      ]);
      > db.example.aggregate([{$project: {'a.b': 0}}])
      {_id: 0, a: [{c: 1}, {c: 2}]}
      > db.example.aggregate([{$project: {a: {b: 0}}}])  // Means the same thing as above.
      {_id: 0, a: [{c: 1}, {c: 2}]}
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              charlie.swanson Charlie Swanson
              Reporter:
              asya Asya Kamsky
              Participants:
              Votes:
              3 Vote for this issue
              Watchers:
              20 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: