Example of $limit Stage
[
{ "_id": ObjectId("60f9d7ac345b7c9df348a86e"), "customer": "Alice", "total": 150 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a86f"), "customer": "Bob", "total": 200 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a870"), "customer": "Charlie", "total": 100 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a871"), "customer": "David", "total": 75 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a872"), "customer": "Eve", "total": 300 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a873"), "customer": "Frank", "total": 180 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a874"), "customer": "Grace", "total": 220 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a875"), "customer": "Harry", "total": 95 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a876"), "customer": "Ivy", "total": 210 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a877"), "customer": "Jack", "total": 125 }
]
Example 1
Suppose We want to retrieve only the first three orders from the collection. Here’s how we can use the $limit stage to achieve this
db.orders.aggregate([
{ $limit: 3 }
])
Output:
Assuming the “orders” collection contains multiple documents, the output of the aggregation operation will be the first three documents as shown in below image.
[
{ "_id": ObjectId("60f9d7ac345b7c9df348a86e"), "customer": "Alice", "total": 150 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a86f"), "customer": "Bob", "total": 200 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a870"), "customer": "Charlie", "total": 100 }
]
Explanation:
- db.orders.aggregate([]) initiates the aggregation pipeline.
- { $limit: 3 } restricts the output to the first three documents show in the pipeline.
Example 2
Suppose We want to retrieve only the first five orders from the collection. Here’s how we can use the $limit stage to achieve this
db.orders.aggregate([
{ $limit: 5 }
])
Output:
[
{ "_id": ObjectId("60f9d7ac345b7c9df348a86e"), "customer": "Alice", "total": 150 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a86f"), "customer": "Bob", "total": 200 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a870"), "customer": "Charlie", "total": 100 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a871"), "customer": "David", "total": 75 },
{ "_id": ObjectId("60f9d7ac345b7c9df348a872"), "customer": "Eve", "total": 300 }
]
Example 3
Suppose we want to implement pagination for a web application displaying customer orders. We can use the $limit stage to retrieve a specific page of results
const pageSize = 10;
const pageNumber = 1; // First page
db.orders.aggregate([
{ $skip: (pageNumber - 1) * pageSize }, // Skip documents on previous pages
{ $limit: pageSize } // Limit results to current page size
])
Output
The output will contain the documents corresponding to the specified page of results.
Explanation: In this example, we calculate the number of documents to skip based on the desired page number and page size, then apply the $limit stage to retrieve the specified number of documents for the current page.
Aggregation Pipeline Limits
In MongoDB, the aggregation pipeline is a powerful tool for processing and transforming data within collections. Among its many stages, the $limit stage is particularly useful for restricting the number of documents that flow through the pipeline.
In this article, we’ll learn about the $limit stage of the aggregation pipeline by exploring its concepts, usage, and practical examples in detail.