Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Excluding Fields from MongoDB Query Results
📖 Scenario: You are managing a small online bookstore database. You want to retrieve information about books but exclude some details like the internal _id field and the supplier information from the results to keep the output clean and focused.
🎯 Goal: Build a MongoDB query that fetches all books but excludes the _id and supplier fields from the returned documents.
📋 What You'll Learn
Create a collection named books with given book documents
Add a query filter variable to select all books
Write a MongoDB find query that excludes the _id and supplier fields
Complete the query with the correct projection to exclude fields
💡 Why This Matters
🌍 Real World
Excluding fields from query results helps keep data clean and protects sensitive information when sharing or displaying data.
💼 Career
Database developers and data analysts often need to control which fields are returned in queries to optimize performance and maintain privacy.
Progress0 / 4 steps
1
Create the books collection with sample documents
Create a variable called books that holds an array of three book documents with these exact fields and values: { title: "The Great Gatsby", author: "F. Scott Fitzgerald", year: 1925, supplier: "SupplierA" }, { title: "1984", author: "George Orwell", year: 1949, supplier: "SupplierB" }, and { title: "To Kill a Mockingbird", author: "Harper Lee", year: 1960, supplier: "SupplierC" }.
MongoDB
Hint
Use an array of objects with exact field names and values.
2
Create a query filter to select all books
Create a variable called query and set it to an empty object {} to select all documents in the books collection.
MongoDB
Hint
Use an empty object {} to select all documents.
3
Write a find query excluding _id and supplier fields
Create a variable called projection and set it to an object that excludes the _id and supplier fields by setting them to 0. Then create a variable called result that simulates the MongoDB find method by filtering books with query and mapping to exclude the specified fields using projection.
MongoDB
Hint
Set fields to 0 in projection to exclude them. Use map to remove those fields from each book.
4
Complete the query with the correct projection
Add a comment above the result variable that says // Query result excluding _id and supplier fields to clearly label the final output.
MongoDB
Hint
Add a comment to label the final query result clearly.
Practice
(1/5)
1. What does setting a field to 0 in a MongoDB query projection do?
easy
A. It excludes that field from the query results.
B. It includes that field in the query results.
C. It renames the field in the query results.
D. It sorts the results by that field.
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 A
Quick 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
A. db.users.find({}, {password: 0})
B. db.users.find({}, {password: 1})
C. db.users.find({password: 0})
D. db.users.find({}, {exclude: 'password'})
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 A
Quick 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
A. [{name: 'Pen', price: 5, stock: 100}]
B. [{name: 'Pen'}]
C. [{_id: 1, price: 5, stock: 100}]
D. [{_id: 1, name: 'Pen'}]
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 D
Quick 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
A. You should use exclude keyword instead of 0.
B. The syntax is correct and will work as expected.
C. You cannot mix exclusion and inclusion except for _id.
D. You must exclude _id explicitly when mixing fields.
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 C
Quick 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
A. db.orders.find({}, {creditCardNumber: 1, cvv: 1})
B. db.orders.find({}, {creditCardNumber: 0, cvv: 0})
C. db.orders.find({}, {creditCardNumber: 0, cvv: 0, _id: 0})
D. db.orders.find({}, {creditCardNumber: false, cvv: false})
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 B
Quick Check:
Exclude sensitive fields only, keep others including _id [OK]
Hint: Exclude sensitive fields with 0, leave others alone [OK]