当使用$ project,$ frequency和$ group时,Mongoose按日期排序

问题描述 投票:0回答:1

下面的查询返回每周聚合的数据,没有特定的顺序。我希望看到它们按日期顺序从旧到新。

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
    }
}

我该如何按日期排序?我试过在很多地方添加排序,但无济于事。

mongodb mongoose
1个回答
0
投票

希望这对你有用。

{
      "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
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.