如何按日期 (json) 对数据进行排序



我想按日期对json数据进行排序,实际数据哈瓦1~31 示例数据:

{
Detail: { '60': 100, '68': 20 },
Time: 2020-01-02T07:08:41.059Z,
No: 'aaa'
},
{
Detail: { '60': 300, '68': 20 },
Time: 2020-01-02T09:10:21.059Z,
No: 'bbb'
},
{
Detail: { '60': 10 },
Time: 2020-01-11T07:08:45.521Z,
No: 'ccc'
}

我如何像这样按日期排序:

{
"2":{
"aaa": { '60': 100, '68': 20 }
"bbb": { '60': 300, '68': 20 }
}
"11":{
"ccc": { '60': 100 },
}
}

谢谢

以下聚合执行此操作。假设类型为DateTime字段。

db.test.aggregate( [
{ 
$group: { 
_id: { day: { $dayOfMonth: "$Time" } }, 
data:{ $push: { k: "$No", v: "$Detail" } } 
} 
},
{ 
$sort: { "_id.day": 1 } 
},
{ 
$addFields: { 
data: { $arrayToObject: "$data" }, 
day: "$_id.day" 
} 
},
{ 
$group: {
_id: null, 
data: { $push: { k: { $toString: "$_id.day" }, v: "$data" } } 
} 
},
{ 
$project: {
_id: 0, 
data: { $arrayToObject: "$data" } 
} 
},
{ 
$replaceRoot: { newRoot: "$data" } 
}
] ).pretty()

最新更新