Sometimes you want to see only some parts of your data and hide others. Excluding fields helps you get just what you need.
Excluding fields from results in MongoDB
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
MongoDB
db.collection.find(query, { fieldToExclude: 0 })Use 0 to exclude a field and 1 to include a field.
You cannot mix including and excluding fields except for the _id field.
Examples
password field from the results.MongoDB
db.users.find({}, { password: 0 })description and reviews fields.MongoDB
db.products.find({}, { description: 0, reviews: 0 })_id and creditCardNumber fields.MongoDB
db.orders.find({}, { _id: 0, creditCardNumber: 0 })Sample Program
This example inserts three employees and then finds all employees but excludes the salary field from the results.
MongoDB
db.employees.insertMany([
{ name: "Alice", age: 30, salary: 5000 },
{ name: "Bob", age: 25, salary: 4000 },
{ name: "Charlie", age: 35, salary: 6000 }
])
db.employees.find({}, { salary: 0 })Important Notes
The _id field is included by default unless you explicitly exclude it with _id: 0.
Excluding fields can help reduce the amount of data sent over the network.
Summary
Use 0 in the projection to exclude fields from query results.
You cannot mix excluding and including fields except for _id.
Excluding fields helps focus on important data and improves performance.
Practice
1. What does setting a field to
0 in a MongoDB query projection do?easy
Solution
Step 1: Understand projection in MongoDB
Projection controls which fields appear in the query results.Step 2: Interpret setting a field to 0
Setting a field to 0 means exclude that field from the results.Final Answer:
It excludes that field from the query results. -> Option AQuick Check:
Field set to 0 = excluded [OK]
Hint: Use 0 in projection to exclude fields quickly [OK]
Common Mistakes:
- Thinking 0 includes the field
- Confusing exclusion with sorting
- Mixing exclusion and inclusion in projection
2. Which of the following is the correct syntax to exclude the field
password from the results in a MongoDB query?easy
Solution
Step 1: Identify correct projection syntax
Projection is the second argument to find(), with field names and 0 or 1 values.Step 2: Exclude field by setting it to 0
Setting password: 0 excludes it from results.Final Answer:
db.users.find({}, {password: 0}) -> Option AQuick Check:
Exclude field = field: 0 in projection [OK]
Hint: Use {field: 0} in second find() argument to exclude [OK]
Common Mistakes:
- Using 1 instead of 0 to exclude
- Putting projection inside query filter
- Using non-existent 'exclude' keyword
3. Given the collection
products with documents like {_id: 1, name: 'Pen', price: 5, stock: 100}, what will be the result of db.products.find({}, {price: 0, stock: 0})?medium
Solution
Step 1: Understand projection excludes price and stock
Setting price: 0 and stock: 0 excludes these fields from results.Step 2: Check which fields remain
_id is included by default, name is included as not excluded.Final Answer:
[{_id: 1, name: 'Pen'}] -> Option DQuick Check:
Excluded fields missing, others present [OK]
Hint: Excluded fields disappear; others stay including _id by default [OK]
Common Mistakes:
- Expecting excluded fields to appear
- Forgetting _id is included by default
- Assuming all fields are excluded
4. What is wrong with this MongoDB query to exclude
email and include name fields: db.users.find({}, {email: 0, name: 1})?medium
Solution
Step 1: Recall projection rules
MongoDB does not allow mixing inclusion and exclusion in projection except for _id.Step 2: Analyze the query
Query mixes email: 0 (exclude) and name: 1 (include), which is invalid.Final Answer:
You cannot mix exclusion and inclusion except for _id. -> Option CQuick Check:
Mixing 0 and 1 fields (except _id) = error [OK]
Hint: Exclude or include fields, but don't mix except _id [OK]
Common Mistakes:
- Mixing 0 and 1 in projection
- Assuming syntax is always flexible
- Using 'exclude' keyword which doesn't exist
5. You want to query
orders collection and exclude creditCardNumber and cvv fields for security, but include all other fields including _id. Which query achieves this correctly?hard
Solution
Step 1: Exclude sensitive fields by setting them to 0
Setting creditCardNumber and cvv to 0 excludes them from results.Step 2: Keep _id included by default
Not excluding _id means it stays included, as required.Final Answer:
db.orders.find({}, {creditCardNumber: 0, cvv: 0}) -> Option BQuick Check:
Exclude sensitive fields only, keep others including _id [OK]
Hint: Exclude sensitive fields with 0, leave others alone [OK]
Common Mistakes:
- Excluding _id unintentionally
- Using 1 to exclude fields
- Using false instead of 0
