|
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}]}
|
|