【问题标题】:mongodb - Is it possible to group with the $bucket operator by date?mongodb - 是否可以按日期与 $bucket 运算符分组?
【发布时间】:2021-07-02 23:34:06
【问题描述】:

是否可以使用 mongodb $bucekt 运算符按日期分组?

       {
        $bucket: {
          groupBy: // date field? 
          boundaries: [0, 5, 10, 15, 20, 30, 50, 75, 100, 500],
          default: 'overBucket',
          output: {
            count: {
              $sum: 1,
            },
            localities: {
              $push: '$$ROOT',
            },
          },
        },
      },

提前感谢您的建议:)

【问题讨论】:

  • 是的,当然可以。我个人在生产中使用代码,其中$bucket 管道由date 分组,没有time 后缀
  • 你好@hhharsha36 你能给我一个例子吗?我尝试按日期分组,但每次都变成相同的结果。
  • 请提供样本文件以进行处理
  • 我试图创造同样的情况。我希望它是完全理解的

标签: node.js mongodb aggregation-framework


【解决方案1】:

如果我理解正确,我认为下面的代码就是你要找的:

db.events.aggregate([
  {
    $match: {
      "type": {
        "$in": [
          "EVENT",
          "SUBEVENT"
        ]
      },
      "verification.status": "APPROVED",
      "verification.public": true,
      
    },
    
  },
  {
    $group: {
      _id: {
        "$dateToString": {
          "date": "$baseData.startDate",
          "format": "%Y-%m-%d"
        },
        
      },
      count: {
        $sum: 1,
        
      },
      events: {
        $push: "$$ROOT",
        
      },
      
    },
    
  },
  
])

如果你想达到以天为界的$bucket 阶段,请告诉我

Mongo Playground Sample Execution

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2021-06-18
    • 1970-01-01
    • 2016-07-01
    • 2020-11-02
    • 2019-01-19
    • 2019-06-06
    • 2011-07-07
    • 2015-01-03
    相关资源
    最近更新 更多