Write a Switch operator in Mongo
Example:
[{"_id" : ObjectId("6024b764abea6cc5c99ceefd"),"name" : "George","grade" : 5.0,"school" : "MathHighSchool"}{"_id" : ObjectId("6024b764abea6cc5c99ceefe"),"name" : "John","grade" : 4.0,"school" : "MathHighSchool"}{"_id" : ObjectId("6024b764abea6cc5c99ceeff"),"name" : "Paul","grade" : 3.0,"school" : "MathHighSchool"}{"_id" : ObjectId("6024b764abea6cc5c99cef00"),"name" : "Ringo","grade" : 5.0,"school" : "MathHighSchool"}{"_id" : ObjectId("6024b764abea6cc5c99cef01"),"name" : "Johnny","grade" : 2.0,"school" : "MathHighSchool"}{"_id" : ObjectId("6024b764abea6cc5c99cef02"),"name" : "Joshua","grade" : 7.0,"school" : "MathHighSchool"}]
Approach
Query: Query that finds all people who: study in the MathHighSchool and then group them by their grades, as it shows the number of people with grade <3 number of people with grade between 3 and 5 and number of people with grade > 5.
db.people.aggregate([{$match:{"school":"MathHighSchool"}},{$project:{"school":1,"div": { $switch:{branches: [{case: { $lte : ["$grade", 3 ] },then: "less than or equal to 3"},{case: { $and : [ { $gt : ["$grade", 3 ] },{ $lt : [ "$grade", 5 ] } ] },then: "between 3 and 5"},{case: { $gte : [ "$grade", 5] },then: "greater than or equal to 5"}],}}}},{$group:{"_id":"$div","count":{$sum:1}}}]);
Output:
[{"_id" : "between 3 and 5","count" : 1.0}{"_id" : "less than or equal to 3","count" : 2.0}{"_id" : "greater than or equal to 5","count" : 3.0}]
No comments:
Post a Comment