-
Type: Task
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Server
-
Labels:None
-
0.5
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}]}
- documents
-
SERVER-24921 No way to $project out just the _id field in aggregation
- Closed
-
SERVER-18966 Allow exclusion in $project stage of aggregation pipeline
- Closed
- is duplicated by
-
DOCS-8911 No way to $project out just the _id field in aggregation
- Closed