The first thing I'd usually do in such a situation is (considering I have enough logging), run a stress test to see what all routes are giving me a problem. Once that's done, I see what do the fast ones have which the slow ones don't and vice-versa.
What exactly do you mean by "huge" MongoDB operations? How is your database connected to your server instance? Is it in the same subnet? Or it's a hosted service?
For client-side caching, I'd suggest you use ETags and then use the If-None-Match header when in the request.
You need to give us a little more information on your setup for us to help you. I am more than willing to update this information if you give me some specifics about the infrastructure.
Shreyansh Pandey for just local environment the DB is setuped in a different port that is the mongodb default port. The Problem with queries is that I have some queries to update the data in the mongodb and then using it to remove a data from different collections and then again update the data based on the second collection callback. Now I know its not good practice to get things going but for now I have done like that. The question for mongodb was if I changed by mongo queries with aggregates function will it help.