首页 > 解决方案 > 获取 max updatedAt 的 X 值,聚合组

问题描述

数据库记录

[
    _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 应该给出该特定用户的最后一个 updatedAt project_id ,最后我也需要 updateAt

标签: node.jsmongodbmongoose

解决方案


推荐阅读