That’s a very good point from tapiocaPENGUIN. This also means that you are shipping your 1.7 million records over the wire and if you look at dataSize it is a lot of data sent over.
I would take a look at the aggregation framework, https://docs.mongodb.com/manual/aggregation/. See if you could reduce the amount of data sent over by having the computation of the report done on the server rather than doing it on the client with the complete data set.
You might still have some issue if the whole 1.7 millions records are needed if you do not have enough RAM.
I would also take a look at the computed pattern at Building With Patterns: The Computed Pattern | MongoDB Blog to see if some subset of the report can be done on historical data that will not changed.