我想按日期对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 },
}
}
谢谢
以下聚合执行此操作。假设类型为Date
的Time
字段。
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()