Bird
Raised Fist0
MongoDBquery~20 mins

Projection for selecting fields in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
🎖️
Projection Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Projection to include specific fields
Given a MongoDB collection users with documents containing name, age, and email, which query will return only the name and email fields for all users?
MongoDB
db.users.find({}, {name: 1, email: 1, _id: 0})
Adb.users.find({}, {name: 0, email: 0})
Bdb.users.find({}, {name: 1, email: 1})
Cdb.users.find({}, {name: 1, email: 1, _id: 0})
Ddb.users.find({}, {name: 1, email: 0})
Attempts:
2 left
💡 Hint
Remember to exclude the _id field if you don't want it in the output.
query_result
intermediate
2:00remaining
Projection excluding a field
Which MongoDB query will return all fields except the password field from the accounts collection?
MongoDB
db.accounts.find({}, {password: 0})
Adb.accounts.find({}, {password: 0})
Bdb.accounts.find({}, {password: false})
Cdb.accounts.find({}, {password: 1})
Ddb.accounts.find({}, {password: null})
Attempts:
2 left
💡 Hint
Use 0 to exclude a field in projection.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in projection
Which option contains a syntax error in the MongoDB projection part of the query?
MongoDB
db.products.find({}, {name: 1, price: 'yes'})
Adb.products.find({}, {name: 1, price: 'yes'})
Bdb.products.find({}, {name: 0, price: 0})
Cdb.products.find({}, {name: 1, price: 0})
Ddb.products.find({}, {name: 1, price: 1})
Attempts:
2 left
💡 Hint
Projection values must be 0 or 1, not strings.
query_result
advanced
2:00remaining
Projection with nested fields
Given documents with a nested address field containing city and zip, which query returns only the name and address.city fields?
MongoDB
db.customers.find({}, {name: 1, 'address.city': 1, _id: 0})
Adb.customers.find({}, {name: 1, address: 0})
Bdb.customers.find({}, {name: 1, address: 1})
Cdb.customers.find({}, {name: 1, 'address.zip': 1})
Ddb.customers.find({}, {name: 1, 'address.city': 1, _id: 0})
Attempts:
2 left
💡 Hint
Use dot notation to project nested fields.
🧠 Conceptual
expert
2:00remaining
Understanding projection behavior with _id field
In MongoDB, when you specify a projection like {name: 1} without mentioning _id, what will be the output regarding the _id field?
AThe <code>_id</code> field is excluded by default in the output.
BThe <code>_id</code> field is included by default in the output.
CThe query will throw an error because <code>_id</code> is not specified.
DThe <code>_id</code> field will be included only if explicitly set to 1.
Attempts:
2 left
💡 Hint
Think about MongoDB's default behavior for _id in projections.

Practice

(1/5)
1. What does projection do in a MongoDB query?
easy
A. It selects which fields to include or exclude in the query result.
B. It sorts the documents in the collection.
C. It updates the documents in the collection.
D. It deletes documents from the collection.

Solution

  1. Step 1: Understand the purpose of projection

    Projection in MongoDB is used to specify which fields to include or exclude in the output of a query.
  2. Step 2: Differentiate projection from other operations

    Sorting, updating, and deleting are different operations and not related to projection.
  3. Final Answer:

    It selects which fields to include or exclude in the query result. -> Option A
  4. Quick Check:

    Projection = Select fields [OK]
Hint: Projection picks fields to show, not to sort or update [OK]
Common Mistakes:
  • Confusing projection with sorting
  • Thinking projection updates data
  • Assuming projection deletes documents
2. Which of the following is the correct syntax to include only the name and age fields in a MongoDB find query?
easy
A. { name: 1, age: 1 }
B. { name: true, age: true }
C. { name: 'include', age: 'include' }
D. { name: 0, age: 0 }

Solution

  1. Step 1: Recall projection syntax

    In MongoDB, to include fields, you set them to 1 in the projection document.
  2. Step 2: Check each option

    { name: 1, age: 1 } uses 1 correctly; { name: true, age: true } uses true which is valid in MongoDB; { name: 'include', age: 'include' } uses strings which is invalid; { name: 0, age: 0 } excludes fields instead of including.
  3. Final Answer:

    { name: 1, age: 1 } -> Option A
  4. Quick Check:

    Include fields = 1 [OK]
Hint: Use 1 to include fields, not strings [OK]
Common Mistakes:
  • Using strings like 'include'
  • Using 0 to include fields
3. Given the collection documents:
{ _id: 1, name: "Alice", age: 25, city: "NY" }
{ _id: 2, name: "Bob", age: 30, city: "LA" }

What will be the result of the query db.collection.find({}, { name: 1, city: 1 })?
medium
A. [{ _id: 1, age: 25 }, { _id: 2, age: 30 }]
B. [{ name: "Alice", city: "NY" }, { name: "Bob", city: "LA" }]
C. [{ _id: 1, name: "Alice", city: "NY" }, { _id: 2, name: "Bob", city: "LA" }]
D. [{ name: "Alice", age: 25, city: "NY" }, { name: "Bob", age: 30, city: "LA" }]

Solution

  1. Step 1: Understand default _id behavior

    By default, MongoDB includes the _id field unless explicitly excluded.
  2. Step 2: Check projection fields

    The query includes name and city fields with 1, so these fields plus _id will appear.
  3. Final Answer:

    [{ _id: 1, name: "Alice", city: "NY" }, { _id: 2, name: "Bob", city: "LA" }] -> Option C
  4. Quick Check:

    Projection includes fields + _id by default [OK]
Hint: Projection includes _id unless set to 0 [OK]
Common Mistakes:
  • Assuming _id is excluded by default
  • Expecting age field in result
  • Confusing included and excluded fields
4. What is wrong with this MongoDB query to exclude the password field?
db.users.find({}, { password: 1 })
medium
A. The syntax for projection is incorrect.
B. It includes the password field instead of excluding it.
C. You cannot exclude fields in MongoDB projection.
D. The query will return an error because password is a reserved word.

Solution

  1. Step 1: Understand projection values

    Setting a field to 1 includes it; setting to 0 excludes it.
  2. Step 2: Analyze the query

    The query sets password: 1, so it includes the password field (and _id), not excludes it.
  3. Final Answer:

    It includes the password field instead of excluding it. -> Option B
  4. Quick Check:

    Use 0 to exclude fields [OK]
Hint: Use 0 to exclude fields, 1 to include [OK]
Common Mistakes:
  • Using 1 to exclude fields
  • Thinking password is reserved word
  • Believing exclusion is not possible
5. You want to fetch documents from a collection but exclude the _id and password fields while including all others. Which projection is correct?
hard
A. { _id: 1, password: 1 }
B. { _id: 1, password: 0 }
C. { _id: 0, password: 1 }
D. { _id: 0, password: 0 }

Solution

  1. Step 1: Understand exclusion in projection

    Setting fields to 0 excludes them from the result.
  2. Step 2: Apply exclusion to _id and password

    To exclude both _id and password, set both to 0 in the projection.
  3. Final Answer:

    { _id: 0, password: 0 } -> Option D
  4. Quick Check:

    Exclude fields with 0, include others by default [OK]
Hint: Set unwanted fields to 0, others stay included [OK]
Common Mistakes:
  • Mixing inclusion and exclusion in projection
  • Forgetting to exclude _id explicitly
  • Setting excluded fields to 1