Database
[{"type":"DIVIDEND_OR_INTEREST","netAmount":2.43,"transactionDate":ISODate("2019-01-01T17:02:36.000Z"),"transactionId":1,"transactionItem":{"instrument":{"symbol":"SPHD"}}},{"type":"DIVIDEND_OR_INTEREST","netAmount":5.00,"transactionDate":ISODate("2019-01-01T17:02:36.000Z"),"transactionId":2,"transactionItem":{"instrument":{"symbol":"ATT"}}},{"type":"DIVIDEND_OR_INTEREST","netAmount":2.43,"transactionDate":ISODate("2019-02-01T17:02:36.000Z"),"transactionId":3,"transactionItem":{"instrument":{"symbol":"SPHD"}}},{"type":"DIVIDEND_OR_INTEREST","netAmount":5.00,"transactionDate":ISODate("2019-02-01T17:02:36.000Z"),"transactionId":4,"transactionItem":{"instrument":{"symbol":"ATT"}}}]
Query
db.collection.aggregate([{$match:{type:"DIVIDEND_OR_INTEREST",netAmount:{$gte:0}}},{$sort:{transactionDate:1}},{$facet:{year:[{$group:{_id:{year:{$year:"$transactionDate"},symbol:"$transactionItem.instrument.symbol"},netAmount:{$sum:"$netAmount"}}},{$group:{_id:"$_id.year",totalYear:{$sum:"$netAmount"},dividends:{$push:{symbol:"$_id.symbol",amount:"$netAmount"}}}},{$project:{_id:0,year:"$_id",totalYear:1,dividends:1}}]}}])