Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Calculator

0

63
Views
Multiple Groupings for MongoDB Aggregate

Given the following data set of Event objects:

[
    {
        "_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")
    }
]

How would I group them by date then by name?

The desired result would look like this:

[ 
  { 
    _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
               }
            ] 
  }
]

Any help on this issue would be greatly appreciated, so thank you!

8 months ago · Santiago Trujillo
1 answers
Answer question

0

you can try this query

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"
        }
      }
    }
  }
])
8 months ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post job Plans Our process Sales
Legal
Terms and conditions Privacy policy
© 2023 PeakU Inc. All Rights Reserved.