db.command.aggregate.arrayElemAt
1. Operator Description
Function: Returns the element at the specified array index.
Declaration: db.command.aggregate.arrayElemAt([array, index])
2. Operator Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| - | <Array>Expression | Yes | The first element array can be any expression that resolves to an array. The second element index can be any expression that resolves to an integer. |
Notes:
If the value is positive,
arrayElemAtreturns the element at the positionindex. If the value is negative,arrayElemAtreturns the element at the positionindexcounting from the end of the array.
3. Sample Code
Suppose the collection exams contains the following records:
{ "_id": 1, "scores": [80, 60, 65, 90] }
{ "_id": 2, "scores": [78] }
{ "_id": 3, "scores": [95, 88, 92] }
Calculate the score of the first exam and the score of the last exam for each:
// Sample code in the Cloud Function environment
const tcb = require('@cloudbase/node-sdk')
const app = tcb.init({
env: 'xxx'
})
const db = app.database()
const $ = db.command.aggregate
exports.main = async (event, context) => {
const res = await db
.collection('exams')
.aggregate()
.project({
first: $.arraElemAt(['$scores', 0]),
last: $.arraElemAt(['$scores', -1])
})
.end()
console.log(res.data)
}
The returned result is as follows:
{ "_id": 1, "first": 80, "last": 90 }
{ "_id": 2, "first": 78, "last": 78 }
{ "_id": 3, "first": 95, "last": 92 }