$firstN
New from version 8.0.1.
The $firstN operator in Amazon DocumentDB returns the first N elements. When used as an accumulator in a $group stage, it returns an array of the first N values in each group. When used as an array expression operator, it returns the first N elements of an array.
Parameters
-
input: The expression that resolves to the field or array from which to return values. -
n: A positive integer that specifies how many values to return. When used as an accumulator in a$groupstage,ncan also be an expression, as long as it resolves to a positive integer based on the group_idfield.
Example (MongoDB Shell)
The following example demonstrates the use of the $firstN accumulator to retrieve the first two quantities for each item during the aggregation.
Note
$firstN selects values in the order that documents reach the $group stage. To return the first N values for a specific ordering (for example, by date or score), add a $sort stage before $group.
Create sample documents
db.sales.insertMany([ { item: "abc", quantity: 10, date: ISODate("2023-01-01") }, { item: "abc", quantity: 5, date: ISODate("2023-01-02") }, { item: "abc", quantity: 8, date: ISODate("2023-01-03") }, { item: "xyz", quantity: 15, date: ISODate("2023-01-01") }, { item: "xyz", quantity: 7, date: ISODate("2023-01-02") }, { item: "xyz", quantity: 3, date: ISODate("2023-01-03") } ]);
Query example
db.sales.aggregate([ { $group: { _id: "$item", firstTwoQuantities: { $firstN: { input: "$quantity", n: 2 } } } } ]);
Output
[
{ "_id": "abc", "firstTwoQuantities": [10, 5] },
{ "_id": "xyz", "firstTwoQuantities": [15, 7] }
]
Expression usage example (MongoDB Shell)
The $firstN operator can also be used as an expression within a $project stage to return the first N elements of an array field.
Create sample documents
db.inventory.insertMany([ { _id: 1, item: "abc", tags: ["red", "green", "blue", "yellow", "purple"] }, { _id: 2, item: "xyz", tags: ["alpha", "beta", "gamma"] } ]);
Query example
db.inventory.aggregate([ { $project: { firstThreeTags: { $firstN: { input: "$tags", n: 3 } } }} ]);
Output
[
{ "_id": 1, "firstThreeTags": ["red", "green", "blue"] },
{ "_id": 2, "firstThreeTags": ["alpha", "beta", "gamma"] }
]
Code examples
To view a code example for using the $firstN operator, choose the tab for the language that you want to use. The following examples show both accumulator usage (in $group) and expression usage (in $project):