I have the following MongoDB document:
{ _id: ObjectId(), company_name: "Name", registered: 2/21/2015 2:00, trucks: [ { truck_id: "TEB7622", weight: 88.33, capacity: 273.333, length: 378.333, width: 377.383, average_grade: 2.5, grades: [ { grade_number: 4, timestamp: 2/21/2015 2:00 } ] }, { truck_id: "TEB5572", weight: 854.33, capacity: 2735.333, length: 378.333, width: 37.383, average_grade: 3.8, grades: [ { grade_number: 4, timestamp: 2/21/2015 2:00 } ] } ] }
I want to upgrade each average_grade truck by adding all grade_numbers . The problem I am facing is that the grade_numbers I'm trying to add is in an array inside the array. I tried using $unwind to unwind both trucks and sort classes.
This is the query I tried to use:
db.col.aggregate([ {$unwind: "$trucks"}, {$unwind: "$trucks.grades"}, { $project: { "_id": "$trucks.truck_id", "trucks.average_grade": { $avg: { $sum: "trucks.grades.grade_number"} } } }])
Should I add something else to my request? I want to update ALL trucks.average_grades , since there are many of them in the document I'm trying to update.
source share