skip to Main Content

how attribute does mongodb uses to group by ?
do they use only the "_id" or the ( "_id" AND "Total departments")
I am slightly confused because "_id" and "Total Departments" are in the same curly bracket $group

db.department.aggregate([
  {
    $group: {
      "_id": {
        "totalNumOfStaff": "$totalNumOfStaff",
        "budget": "$budget"
      },
      "Total departments": {
        $sum: "$budget"
      }
    }
  }
]).pretty()

2

Answers


  1. In your provided code sample, you are grouping by a composite key {totalNumOfStaff, budget}, which comes from 2 sources: totalNumOfStaff and budget respectively. They are combined as the group key _id.

    For Total departments, it is actually the aggregation depending on the group key _id or {totalNumOfStaff, budget}. You are doing $sum by every unique combination of the group key {totalNumOfStaff, budget}.

    Login or Signup to reply.
  2. MongoDB can compare objects also

    Each document that is about to be grouped will get a grouping key, that
    its that document {"totalNumOfStaff": "$totalNumOfStaff","budget": "$budget"}

    Based on the comparison algorithm (comparing the field names and values in order, see the link), it will decide to which group it belongs or create a new group for it.

    In the above example same group is if same totalNumOfStaff AND same budget(order matters) and for each group sums the budget.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search