Database
[{id:1,issueDate:"07/05/2021",code:"31"},{id:2,issueDate:"12/11/2020",code:"14"},{id:3,issueDate:"02/11/2021",code:"98"},{id:4,issueDate:"01/02/2021",code:"14"},{id:5,issueDate:"06/23/2020",code:"14"},{id:6,issueDate:"07/01/2020",code:"31"},{id:7,issueDate:"07/05/2022",code:"14"},{id:8,issueDate:"07/02/2022",code:"20"},{id:9,issueDate:"07/02/2022",code:"14"}]
Query
db.collection.aggregate([{$set:{issueDate:{$dateFromString:{dateString:"$issueDate",format:"%m/%d/%Y"}}}},{$set:{season:{$mod:[{$toInt:{$divide:[{$add:[{$subtract:[{$month:"$issueDate"},1]},1]},3]}},4]}}},{$group:{_id:{season:"$season",code:"$code"},count:{$count:{}},}},{$setWindowFields:{partitionBy:"$_id.season",sortBy:{count:-1},output:{rank:{$denseRank:{}},count:{$sum:"$count"}}}},{$match:{rank:{$lte:2}}},{$group:{_id:"$_id.season",count:{$first:"$count"},codes:{$push:"$_id.code"}}},{$set:{season:{$switch:{branches:[{case:{$eq:["$_id",0]},then:"Winter"},{case:{$eq:["$_id",1]},then:"Spring"},{case:{$eq:["$_id",2]},then:"Summer"},{case:{$eq:["$_id",3]},then:"Autumn "},]}}}}])