$limit (aggregation)


Limits the number of documents passed to the next stage in the pipeline.

The $limit stage has the following prototype form:

{ $limit: <positive integer> }

$limit takes a positive integer that specifies the maximum number of documents to pass along.

If using the $limit stage with any of:

be sure to include at least one field in your sort that contains unique values, before passing results to the $limit stage.

Sorting on fields that contain duplicate values may return an inconsistent sort order for those duplicate fields over multiple executions, especially when the collection is actively receiving writes.

The easiest way to guarantee sort consistency is to include the _id field in your sort query.

See the following for more information on each:

Consider the following example:

{ $limit : 5 }

This operation returns only the first 5 documents passed to it by the pipeline. $limit has no effect on the content of the documents it passes.


When a $sort precedes a $limit and there are no intervening stages that modify the number of documents, the optimizer can coalesce the $limit into the $sort. This allows the $sort operation to only maintain the top n results as it progresses, where n is the specified limit, and ensures that MongoDB only needs to store n items in memory. This optimization still applies when allowDiskUse is true and the n items exceed the aggregation memory limit.

See also:
Give Feedback