Bird
Raised Fist0
MongoDBquery~20 mins

MongoDB Shell (mongosh) basics - 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
🎖️
MongoDB Shell Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Find documents with a specific field value
Given a collection users with documents containing age and name, what is the output of this query?

db.users.find({ age: { $gt: 30 } }).toArray()

Assume the collection has:
{ name: 'Alice', age: 25 }
{ name: 'Bob', age: 35 }
{ name: 'Carol', age: 40 }
MongoDB
db.users.find({ age: { $gt: 30 } }).toArray()
A[{ name: 'Alice', age: 25 }, { name: 'Bob', age: 35 }, { name: 'Carol', age: 40 }]
B[{ name: 'Alice', age: 25 }]
C[{ name: 'Bob', age: 35 }, { name: 'Carol', age: 40 }]
D[]
Attempts:
2 left
💡 Hint
Look for documents where age is greater than 30.
📝 Syntax
intermediate
1:30remaining
Identify the syntax error in the query
Which option contains a syntax error when trying to find documents where status is 'active'?
MongoDB
db.orders.find({ status: 'active' })
Adb.orders.find({ status: 'active' })
Bdb.orders.find({ status = 'active' })
Cdb.orders.find({ 'status': 'active' })
Ddb.orders.find({ status: "active" })
Attempts:
2 left
💡 Hint
Check the use of colon and equal sign in object syntax.
optimization
advanced
2:00remaining
Optimize query to return only specific fields
You want to find all documents in products collection but only return the name and price fields. Which query is correct?
Adb.products.find({}, { name: 1, price: 1 })
Bdb.products.find({}, { name: true, price: true })
Cdb.products.find({}, { name: 1, price: 0 })
Ddb.products.find({}, { name: 0, price: 0 })
Attempts:
2 left
💡 Hint
Use projection to include fields by setting them to 1.
🧠 Conceptual
advanced
2:30remaining
Understanding the effect of update operators
What will be the result of this update operation?

db.inventory.updateOne({ item: 'book' }, { $set: { qty: 50 }, $inc: { sold: 5 } })

Assuming the document before update is:
{ item: 'book', qty: 20, sold: 10 }
A{ item: 'book', qty: 50, sold: 15 }
B{ item: 'book', qty: 70, sold: 15 }
C{ item: 'book', qty: 50, sold: 5 }
D{ item: 'book', qty: 20, sold: 15 }
Attempts:
2 left
💡 Hint
Remember $set replaces the field value; $inc adds to the existing value.
🔧 Debug
expert
3:00remaining
Identify the cause of the error in aggregation pipeline
This aggregation pipeline causes an error:

db.sales.aggregate([ { $match: { status: 'A' } }, { $group: { _id: '$cust_id', total: { $sum: '$amount' } } }, { $sort: { total: -1 } } ])

What is the most likely cause of the error?
AThe $match stage is missing a required field
BThe $sort stage must come before $group stage
CField names in $group stage must not start with '$'
DThe $sum operator requires numeric values but 'amount' contains strings
Attempts:
2 left
💡 Hint
Check data types for aggregation operators.

Practice

(1/5)
1. What command in mongosh lists all the databases available on the server?
easy
A. show dbs
B. list databases
C. show collections
D. dbs list

Solution

  1. Step 1: Understand the command purpose

    The question asks for the command that lists all databases in mongosh.
  2. Step 2: Recall mongosh commands

    show dbs is the correct command to list databases. Other options are incorrect or do not exist.
  3. Final Answer:

    show dbs -> Option A
  4. Quick Check:

    List databases = show dbs [OK]
Hint: Use 'show dbs' to list all databases quickly [OK]
Common Mistakes:
  • Confusing 'show collections' with listing databases
  • Using non-existent commands like 'list databases'
  • Trying 'dbs list' which is invalid
2. Which of the following is the correct syntax to switch to a database named shop in mongosh?
easy
A. switch shop
B. use shop
C. db switch shop
D. change db shop

Solution

  1. Step 1: Identify the command to change database

    In mongosh, the command to switch databases is use followed by the database name.
  2. Step 2: Match the correct syntax

    use shop correctly switches to the 'shop' database. Other options are invalid commands.
  3. Final Answer:

    use shop -> Option B
  4. Quick Check:

    Switch database = use [OK]
Hint: Remember: 'use' changes the current database [OK]
Common Mistakes:
  • Using 'switch' instead of 'use'
  • Adding extra words like 'db' or 'change'
  • Typing commands that don't exist in mongosh
3. Given the following commands in mongosh:
use testdb
db.products.insertOne({name: 'Pen', price: 1.5})
db.products.find({name: 'Pen'}).toArray()

What will be the output of the find() command?
medium
A. [{ _id: ObjectId("...") , name: 'Pen', price: 1.5 }]
B. null
C. SyntaxError
D. []

Solution

  1. Step 1: Insert a document into 'products' collection

    The insertOne() command adds a document with name 'Pen' and price 1.5 to the 'products' collection.
  2. Step 2: Query the collection for documents with name 'Pen'

    The find() command searches for documents matching {name: 'Pen'}. Since we inserted one, it returns an array with that document including an auto-generated _id.
  3. Final Answer:

    [{ _id: ObjectId("...") , name: 'Pen', price: 1.5 }] -> Option A
  4. Quick Check:

    Inserted doc found = array with document [OK]
Hint: Inserted documents appear in find results as arrays [OK]
Common Mistakes:
  • Expecting find() to return null if document exists
  • Confusing syntax causing errors
  • Thinking find() returns a single object, not an array
4. You run this command in mongosh:
db.users.insertOne({name: 'Alice', age: 30})

But get an error: ReferenceError: db is not defined. What is the most likely cause?
medium
A. The syntax of the insertOne command is incorrect
B. The insertOne method does not exist
C. You forgot to switch to a database using use command
D. MongoDB server is not running

Solution

  1. Step 1: Understand the error message

    ReferenceError: db is not defined means the shell does not know what db is.
  2. Step 2: Identify cause in mongosh context

    This usually happens if you have not selected a database with use. Without a current database, db is undefined.
  3. Final Answer:

    You forgot to switch to a database using use command -> Option C
  4. Quick Check:

    db undefined = forgot 'use' [OK]
Hint: Always run 'use dbname' before using db commands [OK]
Common Mistakes:
  • Assuming insertOne method is missing
  • Thinking syntax is wrong when it is correct
  • Ignoring the need to start MongoDB server
5. You want to list all collections in the current database and then insert a document into a collection named orders. Which sequence of commands in mongosh is correct?
hard
A. show collections use orders db.insertOne({item: 'Book', qty: 3})
B. show dbs db.orders.insertOne({item: 'Book', qty: 3})
C. use orders show collections db.insertOne({item: 'Book', qty: 3})
D. show collections db.orders.insertOne({item: 'Book', qty: 3})

Solution

  1. Step 1: List collections in current database

    show collections lists all collections in the current database. This is the first correct step.
  2. Step 2: Insert document into 'orders' collection

    Use db.orders.insertOne(...) to insert a document into the 'orders' collection. This is the correct syntax.
  3. Final Answer:

    show collections db.orders.insertOne({item: 'Book', qty: 3}) -> Option D
  4. Quick Check:

    List collections then insert = show collections db.orders.insertOne({item: 'Book', qty: 3}) [OK]
Hint: Use 'db.collection.insertOne()' after 'show collections' [OK]
Common Mistakes:
  • Trying to 'use' a collection as a database
  • Calling insertOne directly on db without collection
  • Listing databases instead of collections