db.st.aggregate({$project: {name: 1, classes:1}}, {$unwind: "$classes"}, {$group: { _id: "$classes",roster: {$push: "$name"} } }, {$project: {_id:0, class:"$_id", roster:1}}, {$sort: {class: 1}} ) db.st.aggregate({$unwind: { path:"$classes", includeArrayIndex: "idx"} }, {$unwind: { path:"$scores", includeArrayIndex: "sidx"} }, {$project: {name:1, class:"$classes", scores:1, diff: {$subtract: ["$idx", "$sidx"]} } }, {$match: {diff: 0, class:365}}, {$project:{name:1, class:1, score:"$scores"}} ) db.st.aggregate({$unwind: { path:"$classes", includeArrayIndex: "idx"} }, {$unwind: { path:"$scores", includeArrayIndex: "sidx"} }, {$project: {name:1, class:"$classes", scores:1, diff: {$subtract: ["$idx", "$sidx"]} } }, {$match: {diff: 0}}, {$project:{name:1, class:1, score:"$scores"}}, {$group: {_id: "$class", avScore: {$avg: "$score"}, stDev: {$stdDevPop: "$score"} } } ) db.st.aggregate({$group: {_id: "$gpa", count: {$sum: 1} }}, {$sort: {_id: -1}}, {$limit: 1} ) db.st.aggregate({$group: {_id: "$gpa", count: {$sum: 1}, folks:{$push: "$name"} }}, {$sort: {_id: -1}}, {$limit: 1} ) db.st.aggregate({$group: {_id: 1, mGpa: {$max: "$gpa"} } }) db.st.aggregate({$group: {_id: 1, mGpa: {$max: "$gpa"}, folks: {$push: {name: "$name", gpa:"$gpa"}} } }, {$unwind: "$folks"}) db.st.aggregate({$unwind: "$scores"}, {$bucket: { groupBy: "$scores", boundaries: [50, 75, 90, 100], default: "other", output: { count: {$sum: 1}, name: {$addToSet: "$name"}} } } ) db.st.aggregate({$unwind: "$courses"}, {$lookup: { from: "prof", localField: "courses", foreignField: "course", as: "professors" } } )