MongoDB - Projection Queries
A projection query is a query where you specify which fields should be returned.
In MongoDB, when you query a collection using the db.collection.find()
method, you can specify which fields you would like to have returned.
You can do this by including the field names in your query, and adding a 1
or 0
next to them, to specify whether it should be returned or not. This is a projection parameter. A projection parameter of 1
will display the field and a 0
will hide it.
Example
First let's do a query without projection (so we can see how many fields are returned):
Without Projection
Result:
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
With Projection
Now, let's use projection to display just the name field:
Result:
{ "_id" : 1, "name" : "Ian Gillan" } { "_id" : 6, "name" : "Jeff Martin" }
You will notice that the _id
field is automatically included, even if you don't specify it. You can exclude this field by using a 0
against it:
Result:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin" }
Mixing Inclusions and Exclusions
You can't mix 1
s and 0
s (with the exception of the _id
field). If you try to mix inclusions and exclusions, like this:
You'll end up with this error:
Error: error: { "waitedMS" : NumberLong(0), "ok" : 0, "errmsg" : "Projection cannot have a mix of inclusion and exclusion.", "code" : 2 }
So to you either include fields or exclude them — not both.
Here's an example of specifying fields by exclusion:
Result:
{ "name" : "Ian Gillan" } { "name" : "Jeff Martin", "born" : 1969 }