Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Working with Capped Collections in MongoDB

1. Introduction

Capped collections are a special type of collection in MongoDB that maintain a fixed size and automatically remove the oldest documents when the size limit is reached. This makes them ideal for logging or caching scenarios.

2. What are Capped Collections?

Capped collections have the following characteristics:

  • Fixed size: The maximum size of the collection is defined at creation time.
  • Ordered: Documents are stored in the order they are inserted.
  • Automatic deletion: When the collection reaches its size limit, the oldest documents are removed to make space for new ones.
Note: Capped collections do not support delete operations and do not allow for document updates that increase their size.

3. Creating Capped Collections

To create a capped collection, you can use the createCollection method with the capped option set to true and specify a maximum size.


db.createCollection("myCappedCollection", {
    capped: true,
    size: 1048576 // 1 MB
});
        

4. Inserting Data

Inserting data into a capped collection is similar to regular collections. You can use the insert method.


db.myCappedCollection.insert({ message: "Log entry 1" });
db.myCappedCollection.insert({ message: "Log entry 2" });
        

5. Reading Data

To read data from a capped collection, you can use the find method.


db.myCappedCollection.find().sort({ _id: 1 });
        

6. Best Practices

  • Use capped collections for scenarios where you need a fixed-size log or cache.
  • Monitor the size of your capped collections to ensure they are appropriately sized for your data.
  • Consider using capped collections in conjunction with TTL indexes for more complex data retention strategies.

7. FAQ

Can capped collections be resized after creation?

No, capped collections cannot be resized after they are created. You would need to create a new capped collection with the desired size.

What happens if I exceed the size limit of a capped collection?

When the size limit is reached, the oldest documents are automatically deleted to make space for new documents.

Are capped collections suitable for all use cases?

Capped collections are best suited for scenarios where data is generated continuously and only the most recent data is relevant, such as logging and caching.