📖 Scenario: You are managing a logging system that stores recent log messages. To save space, you want to keep only the latest 5 log entries in your database.
🎯 Goal: Build a capped collection in MongoDB that holds exactly 5 log documents. Insert 5 logs, then add one more log to see the oldest log removed automatically.
📋 What You'll Learn
Create a capped collection named logs with a maximum of 5 documents
Insert 5 log documents with fields message and level
Insert a 6th log document to trigger automatic removal of the oldest log
Query the logs collection to confirm only 5 documents remain
💡 Why This Matters
🌍 Real World
Capped collections are useful for storing logs, sensor data, or any data where only the most recent entries matter and storage space is limited.
💼 Career
Understanding capped collections helps in roles involving database management, backend development, and system monitoring where efficient data retention is important.
Progress0 / 4 steps
1
Create a capped collection named logs
Use the db.createCollection method to create a capped collection called logs with a maximum of 5 documents and a size of 10000 bytes.
MongoDB
Hint
Use db.createCollection("logs", { capped: true, size: 10000, max: 5 }) to create the capped collection.
2
Insert 5 log documents into logs
Insert 5 documents into the logs collection. Each document should have a message field with values "Log 1" to "Log 5" and a level field with value "info".
MongoDB
Hint
Use db.logs.insertMany([...]) with 5 documents having message and level fields.
3
Insert a 6th log document to trigger removal of the oldest log
Insert one more document into the logs collection with message set to "Log 6" and level set to "warning". This will cause the oldest document to be removed automatically.
MongoDB
Hint
Use db.logs.insertOne({ message: "Log 6", level: "warning" }) to add the 6th log.
4
Query the logs collection to confirm only 5 documents remain
Use db.logs.find() to retrieve all documents from the logs collection. Confirm that only 5 documents exist and the oldest log "Log 1" is removed.
MongoDB
Hint
Use db.logs.find() to see all documents in the capped collection.
Practice
(1/5)
1. What is the main purpose of a capped collection in MongoDB?
easy
A. To store data only in memory without writing to disk
B. To allow unlimited data growth without any size restrictions
C. To store data with a fixed size limit and automatically remove old entries
D. To create collections that support complex transactions
Solution
Step 1: Understand capped collection purpose
Capped collections are designed to hold a fixed amount of data, automatically removing the oldest entries when full.
Step 2: Compare options with this behavior
Only To store data with a fixed size limit and automatically remove old entries describes fixed size and automatic removal of old data, matching capped collection behavior.
Final Answer:
To store data with a fixed size limit and automatically remove old entries -> Option C
Quick Check:
Capped collection = fixed size + auto-remove old [OK]
Hint: Remember capped means fixed size with auto-removal [OK]
Common Mistakes:
Thinking capped collections grow unlimited
Confusing capped with in-memory storage
Assuming capped collections support complex transactions
2. Which of the following is the correct command to create a capped collection named logs with a maximum size of 1MB?
easy
A. db.createCappedCollection('logs', 1048576)
B. db.logs.create({ capped: true, size: 1048576 })
C. db.createCollection('logs', { size: 1048576 })
D. db.createCollection('logs', { capped: true, size: 1048576 })
Solution
Step 1: Recall syntax for capped collection creation
The correct syntax uses db.createCollection with options including capped: true and size in bytes.
The collection size is 100 bytes. Each document is 50 bytes, so two documents fit exactly.
Step 2: Analyze insertion of 3 documents
When inserting the third document, the oldest document (first) is removed to keep size within 100 bytes, so last two remain.
Final Answer:
Only the last 2 documents will be stored, the first is removed -> Option A
Quick Check:
Size limit causes oldest removal [OK]
Hint: Capped size limits storage; oldest removed when full [OK]
Common Mistakes:
Assuming all documents fit ignoring size
Expecting insertion failure instead of removal
Thinking only first document stays
4. You tried to create a capped collection with db.createCollection('events', { capped: true }) but got an error. What is the likely cause?
medium
A. The collection name 'events' is reserved and cannot be used
B. Missing the required size option specifying the maximum bytes
C. Capped collections cannot be created with createCollection
D. You must specify max documents instead of size
Solution
Step 1: Recall required options for capped collections
When creating a capped collection, the size option (max bytes) is mandatory.
Step 2: Analyze the error cause
Omitting size causes an error. Collection name and method are valid. max is optional.
Final Answer:
Missing the required size option specifying the maximum bytes -> Option B
Quick Check:
Capped creation requires size option [OK]
Hint: Always specify size when creating capped collections [OK]
Common Mistakes:
Forgetting the size option
Thinking collection names are restricted
Confusing max documents with required size
5. You want to store recent user activity logs in a capped collection named userLogs with a max of 1000 documents and size limit 5MB. Which command correctly creates this collection?
hard
A. db.createCollection('userLogs', { capped: true, size: 5242880, max: 1000 })
B. db.createCollection('userLogs', { capped: true, max: 1000 })
C. db.createCollection('userLogs', { size: 5242880, max: 1000 })
D. db.createCollection('userLogs', { capped: true, size: 1000 })
Solution
Step 1: Identify required options for capped collection with limits
Must specify capped: true, size in bytes, and max documents.
Step 2: Evaluate each option
db.createCollection('userLogs', { capped: true, size: 5242880, max: 1000 }) correctly includes all three: capped true, size 5MB (5*1024*1024=5242880 bytes), and max 1000. Others miss required options or have wrong values.