在MongoDB中按月对数据进行分组

Group data by Month in MongoDB

提问人:Vishambar Pandey 提问时间:10/19/2023 最后编辑:rayVishambar Pandey 更新时间:10/20/2023 访问量:40

问:

我有以下一组数据,假设我在数组中有 3 个集合对象:

    [
       {
          "_id":"6530307c64d30c6248a91808",
          "userId":"6530305964d30c6248a917e5",
          "gameType":"car_race",
          "score":1093,
          "winningPosition":0,
          "winningAmount":0,
          "date":"2023-10-18T19:22:36.628Z",
          "userName":"vis2"
       },
       {
          "_id":"65302f9e64d30c6248a91790",
          "userId":"64cfff11b5eb051e525f6d07",
          "gameType":"car_race",
          "score":608,
          "winningPosition":0,
          "winningAmount":0,
          "date":"2023-10-18T19:18:54.695Z",
          "userName":"vis1"
       },
       {
          "_id":"653030d864d30c6248a9183c",
          "userId":"653030c464d30c6248a91816",
          "gameType":"car_race",
          "score":275,
          "winningPosition":0,
          "winningAmount":0,
          "date":"2023-09-18T19:24:08.754Z",
          "userName":"vis3"
       }
    ]

在这里我们可以看到,我们有 10 月份的前两条记录和 9月以来的第三条记录。我想对输出数据进行分组 按月如下:

    [
       {
          "month":"october",
          "data":[
             {
                "_id":"6530307c64d30c6248a91808",
                "userId":"6530305964d30c6248a917e5",
                "gameType":"car_race",
                "score":1093,
                "winningPosition":0,
                "winningAmount":0,
                "date":"2023-10-18T19:22:36.628Z",
                "userName":"vis2"
             },
             {
                "_id":"65302f9e64d30c6248a91790",
                "userId":"64cfff11b5eb051e525f6d07",
                "gameType":"car_race",
                "score":608,
                "winningPosition":0,
                "winningAmount":0,
                "date":"2023-10-18T19:18:54.695Z",
                "userName":"vis1"
             }
          ]
       },
       {
          "month":"september",
          "data":[
             {
                "_id":"653030d864d30c6248a9183c",
                "userId":"653030c464d30c6248a91816",
                "gameType":"car_race",
                "score":275,
                "winningPosition":0,
                "winningAmount":0,
                "date":"2023-09-18T19:24:08.754Z",
                "userName":"vis3"
             }
          ]
       }
    ]

提前致谢。请让我知道我应该写什么mongodb查询。

MongoDB 投影

评论

2赞 cmgchess 10/20/2023
也许像 mongoplayground.net/p/2B8L5lceTER 一样?
1赞 ray 10/20/2023
@cmgchess我认为他们在 MongoDB v7.0 中添加了带有 %B 的完整月份名称,因此您的想法可以缩短为。(playground 仍然是 v6.0,因此无法正确演示)

答: 暂无答案