Database

db={"transaction":[{"_id":"fffdb22b-912d-4166-909b-7d0fe790ba2a","companyVendorId":"1001","date":ISODate("2019-01-02T05:30:00.000+05:30"),"amount":100},{"_id":"fff94874-27af-4a39-ae59-3a46b8c7f573","companyVendorId":"1002","date":ISODate("2019-01-25T05:30:00.000+05:30"),"amount":200},{"_id":"fff94874-27af-4a39-ae59-3a46b8c7f574","companyVendorId":"1002","date":ISODate("2019-01-29T05:30:00.000+05:30"),"amount":200},{"_id":"fff68faf-2f11-480f-83d2-bfcb45b12d5b","companyVendorId":"1004","date":ISODate("2019-01-12T05:30:00.000+05:30"),"amount":500},{"_id":"fff4dfaa-46cd-48e3-a871-1f086a2c5438","companyVendorId":"1005","date":ISODate("2019-02-13T05:30:00.000+05:30"),"amount":600},{"_id":"fff18ff2-015e-4ddc-81f2-a12ab3503d05","companyVendorId":"1006","date":ISODate("2019-02-08T05:30:00.000+05:30"),"amount":700},{"_id":"ffeb16cd-ae1b-4c1e-aa93-d64347b5ff39","companyVendorId":"1007","date":ISODate("2019-02-18T05:30:00.000+05:30"),"amount":800}]}

Query

db.transaction.aggregate([{"$match":{"date":{"$gte":ISODate("2019-01-01T00:00:00Z"),"$lte":ISODate("2019-12-31T23:59:59Z")}}},{"$group":{"_id":{"$month":"$date"},"data":{"$push":{"_id":{"$month":"$date"},"companyVendorId":"$companyVendorId","amount":"$amount"}},"data2":{"$push":{"companyVendorId":"$companyVendorId","amount":"$amount"}}}},{"$unwind":"$data2"},{"$group":{"_id":{"month":"$_id","companyVendorId":"$data2.companyVendorId"},"data":{"$first":"$data"},"max":{"$max":"$data2.amount"},"min":{"$min":"$data2.amount"}}},{"$sort":{"_id.month":1,"max":-1}},{"$group":{"_id":"$_id.month","data":{"$first":"$data"},"data2":{"$push":{"companyVendorId":"$_id.companyVendorId","max":"$max","min":"$min"}}}},{$addFields:{data2:{$map:{input:{$range:[0,{$min:[{$size:"$data2"},2]},1]},as:"i",in:{companyVendorId:{$arrayElemAt:["$data2.companyVendorId","$$i"]},max:{$arrayElemAt:["$data2.max","$$i"]},min:{$ifNull:[{$arrayElemAt:["$data2.max",{$add:["$$i",1]}]},{$arrayElemAt:["$data2.min","$$i"]}]}}}}}},{$addFields:{data3:{$map:{input:{$slice:["$data2",2]},as:"topN",in:{$reduce:{input:"$data",initialValue:{_id:"",companyVendorId:"$$topN.companyVendorId",amount:0},in:{_id:"$_id",companyVendorId:"$$value.companyVendorId",amount:{$add:["$$value.amount",{$cond:[{$and:[{$eq:["$$value.companyVendorId","$$this.companyVendorId"]},{$gte:["$$this.amount","$$topN.min"]},{$lte:["$$this.amount","$$topN.max"]}]},"$$this.amount",0]}]}}}}}}}},{$unwind:"$data3"},{$replaceWith:"$data3"},{$sort:{_id:1,amount:-1}}])

Result