db.zips.aggregate( { $group: { _id: { state: "$state", city: "$city" }, zipcount : {$sum : 1}, pop: { $sum: "$pop" } } }, { $sort: { zipcount: 1 } }, { $group: { _id : "$_id.state", biggestCity: { $last: "$_id.city" }, population: { $last: "$pop" }, zipcount : { $last : "$zipcount"} } } ,{ $sort : {population : -1}})