下面的查询返回每周聚合的数据,没有特定的顺序。我希望看到它们按日期顺序从旧到新。
createdTime是类型Date。
我希望结果按周顺序排列,例如49,50,51,52,00,01,02等
{
"aggregate": [
{
"$project": {
"frequency": {
"$dateToString": {
"format": "%U",
"date": "$createdTime"
}
}
}
},
{
"$group": {
"_id":"$frequency",
"count": {
"$sum": 1
}
}
}
]
}
但它们以随机顺序返回(其中_id是周数):
{
{
"_id": "52",
"count": 51
},
{
"_id": "07",
"count": 4103
},
{
"_id": "51",
"count": 2608
},
{
"_id": "49",
"count": 69599
},
{
"_id": "01",
"count": 4418
}
}
我该如何按日期排序?我试过在很多地方添加排序,但无济于事。
希望这对你有用。
{
"aggregate": [
{
"$project": {
"frequency": {
$concat:[{
"$dateToString": {
"format": "%Y",
"date": "$createdTime"
},{
"$dateToString": {
"format": "%U",
"date": "$createdTime"
}]
}
}
},
{
"$group": {
"_id":"$frequency",
"count": {
"$sum": 1
}
}
},{$sort:{_id:-1}}
]
}
输出将如下所示
{
{
"_id": "201807",
"count": 4103
},
{
"_id": "201801",
"count": 4418
},
{
"_id": "201752",
"count": 51
},
{
"_id": "201751",
"count": 2608
},
{
"_id": "201749",
"count": 69599
}
}