javascript - MongoDB 聚合的多个分组

标签 javascript mongodb

给定以下 Event 对象数据集:

[
    {
        "_id": ObjectId("4fda05cb322b1c95b531ac26",
        "title": "BUTTON CLICKED",
        "createdAt": ISODate("2017-01-12T01:00:00+01:00")
    },
    {
        "_id": ObjectId("1235h1k235h1kl325h1v31gv",
        "title": "BUTTON CLICKED",
        "createdAt": ISODate("2017-01-14T01:00:00+01:00")
    },
    {
        "_id": ObjectId("c2n890904cn897qnxp23hjk1",
        "title": "PAGE VIEWED",
        "createdAt": ISODate("2017-01-12T02:00:00+01:00")
    }
]

我如何按日期然后按名称对它们进行分组?

期望的结果如下所示:

[ 
  { 
    _id: { year: 2017, month: 1, day: 11 },
    events: [ { 
                title: "BUTTON PRESSED",
                count: 3
               }, { 
                title: "PAGE VIEWED",
                count: 2
               }
            ] 
  },
  { 
    _id: { year: 2017, month: 1, day: 24 },
    events: [ { 
                title: "BUTTON PRESSED",
                count: 1
               }
            ] 
  }
]

任何有关此问题的帮助将不胜感激,谢谢!

最佳答案

您可以尝试此查询

db.collectionName.aggregate([
    $group: {
       _id : {
        year : { $year : "$createdAt" },
        month : { $month : "$createdAt" },
        day : { $dayOfMonth : "$createdAt" },
        title: "$title"
       },
       count:{$sum:1}
      }
    },
  {
    $group:{
      _id:{
        year: "$_id.year",
        month: "$_id.month",
        day: "$_id.day"
      },
      data:{
        $push: {
          name:"$_id.title",
          count:"$count"
        }
      }
    }
  }
])

关于javascript - MongoDB 聚合的多个分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867369/

相关文章:

javascript - Jquery C# 中的数据集值

javascript - 尝试设置 node.js Web 服务器

mongodb - 构建 mongoDB 对象数据库

node.js - 如果文件未导出,如何使用在单独文件中定义的 Mongoose 模型?

python - 使用 Pandas 数据框创建一个类(更新)

ruby-on-rails - 如何将 Mongoid _id 转换为时间戳 (Rails)

javascript - react native : Passing specific object from array of object as props

javascript - 如何通过将鼠标悬停在 Javascript 中的三个按钮之一上来显示和更新隐藏的 div 元素?

javascript - D3js : blocks with text inside & hover to show more text

node.js - Nodejs如何发布多个数组