我有一个包含these等文档的收藏集。
我想做的是从clusters
字段最高(最近)的文档中获取所有不同的lastupdate
。
我认为这应该是输出:
[
"19":"Income2",
"20":"Income Modified",
"21":"Income Modified"
]
答案 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"
}
]
}