Агрегация MongoDB получает поле последнего элемента из вложенного массива - PullRequest
1 голос
/ 30 апреля 2020

Я хочу объединить и отобразить только последний объект во вложенном массиве. Это моя БД:

[{
  "firstName": "Shaun",
  "salary": [
    {
    "id":1,
    "rate": 250,
    },
    {
    "id":2,
     "rate": 290,
    }
  ]
},{
  "firstName": "Julian",
  "salary": [
    {
    "id":1,
     "rate": 750,      
    },
    {
    "id":2,
     "rate": 760,      
    },
    {
    "id":3,
     "rate": 790,      
    },
  ]
}
}]

Мой желаемый результат:

{"firstName": "Shaun", "rate":290},{"firstName": "Julian", "rate":790}

1 Ответ

1 голос
/ 30 апреля 2020

Попробуйте запрос агрегации ниже, который использует $ arrayElemAt , чтобы получить последний элемент из массива salary.rate:

db.collection.aggregate({
  $project: {
    firstName: 1,
    rate: { $arrayElemAt: [ "$salary.rate", -1 ] }
  }
})

Тест: mongoplayground

...