Получить X значение max updatedAt с группой в совокупности

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

Записи БД

 [
    _id: 1,
    user_id: 1,
    project_id: 1,
    updatedAt: 2020-12-20
]
[
    _id: 2,
    user_id: 1,
    project_id: 2,
    updatedAt: 2020-12-22
]
[
    _id: 3,
    user_id: 1,
    project_id: 3,
    updatedAt: 2020-12-21
]
[
    _id: 4,
    user_id: 2,
    project_id: 6,
    updatedAt: 2020-12-20
]
[
    _id: 5,
    user_id: 2,
    project_id: 5,
    updatedAt: 2020-12-23
]

userproject.aggregate([
    {
        $match: { 
            "active":true
        }
    }, {
        $group: {
            _id: "$user_id",
            updatedAt : { $max : "$updatedAt" }
        }
    },
    {
        $sort : { updatedAt: -1 }
    },
    { 
        $project: {
            "_id": "$_id",
        }
    }
])
 

Вот код. мне нужен project_id или последнего обновленного объекта. я использовал $first, $ last, но не получил необходимого результата.
есть ли у кого-нибудь идеи, что я должен добавить, чтобы получить результат.

Конечный результат, что мне нужно

 [
    [
        _id: 1,
        project_id: 2
        updatedAt: 2020-12-22
    ],
    [
        _id: 2,
        project_id: 5
        updatedAt: 2020-12-23
    ]

]
 

_id должен указывать значение user_id, а project_id должен указывать последнее обновление для project_id этого конкретного пользователя, и в конце мне также понадобится updateAt

Комментарии:

1. Какой результат вы получили? И какой результат вы ожидаете получить?

2. @RobertSeaman я просто добавляю больше информации в сообщение, не могли бы вы, пожалуйста, изучить его