MongoDB获取最近日期的值

时间:2019-08-01 15:35:30

标签: mongodb nosql mongodb-query aggregation-framework

我有一个包含these等文档的收藏集。
我想做的是从clusters字段最高(最近)的文档中获取所有不同的lastupdate
我认为这应该是输出:

[
    "19":"Income2",
    "20":"Income Modified",
    "21":"Income Modified"
]

1 个答案:

答案 0 :(得分:1)

请尝试:

db.yourCollection.aggregate([{ $unwind: '$meta.clusters' },
{ $project: { '_id': { $objectToArray: '$meta.clusters' }, 'last_update': 1 } }, { $sort: { 'last_update': -1 } },
{ $group: { _id: '$_id.k', values: { $first: '$$ROOT' } } }, { $sort: { 'values.last_update': -1 } },
{ $replaceRoot: { 'newRoot': '$values' } },
{ $group: { _id: '', distinctCLusters: { $push: { $arrayToObject: "$_id" } } } }, { $project: { _id: 0 } }])

输出提供的数据:

{
    "distinctCLusters" : [  
        {
            "21" : "Income Modified"
        },
        {
            "19" : "Income2"
        },
        {
            "20" : "Income Modified"
        }
    ]
}