$lastN
New from version 8.0.1.
The $lastN operator in Amazon DocumentDB returns the last N elements. When used as an accumulator in a $group stage, it returns an array of the last N values in each group. When used as an array expression operator, it returns the last 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 $lastN accumulator to retrieve the last two quantities for each item during the aggregation.
Note
$lastN selects values in the order that documents reach the $group stage. To return the last 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", lastTwoQuantities: { $lastN: { input: "$quantity", n: 2 } } } } ]);
Output
[
{ "_id": "abc", "lastTwoQuantities": [5, 8] },
{ "_id": "xyz", "lastTwoQuantities": [7, 3] }
]
Expression usage example (MongoDB Shell)
The $lastN operator can also be used as an expression within a $project stage to return the last 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: { lastThreeTags: { $lastN: { input: "$tags", n: 3 } } }} ]);
Output
[
{ "_id": 1, "lastThreeTags": ["blue", "yellow", "purple"] },
{ "_id": 2, "lastThreeTags": ["alpha", "beta", "gamma"] }
]
Code examples
To view a code example for using the $lastN 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):