Open In App

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.



The $limit Stage

Syntax:

The basic syntax of the $limit stage in the aggregation pipeline is as follows:



{ $limit: <positive integer> }

Explanation:

Common Aggregation Pipeline Stages

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:

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.

Benefits of Using $limit

The $limit stage can be used in various scenarios, including:

Optimizing Aggregation Pipeline Queries

To work within the limits of the aggregation pipeline and ensure efficient query execution, developers can employ various optimization techniques:

Conclusion

Overall, Understanding the limits of the aggregation pipeline in MongoDB is essential for designing efficient queries and optimizing query performance. By being aware of document size limits, pipeline stage limits, memory limits, and time limits, developers can effectively design and execute aggregation pipeline queries within the constraints of the MongoDB environment.


Article Tags :