If your queries are indexed and/or fast, hitting the database is probably the way to go. The other option would be to have a caching layer. If you did that in raw node.js you'd buy yourself a lot of complexity (and possible performance issues), so I'd stay away from that. If you did it in another service (redis, memcached) you probably wouldn't see much performance gain unless the queries are complex or slow. If the queries are complex, you could regenerate the results every 20 minutes and save that somewhere in mongo and just run the queries from that. Ex:
setInterval(regen_stats, 20 * 60 * 1000)
The bottom line is that databases are meant to be queried, so you don't have to start taking things away from them until it stops performing (usually due to scale or complexity of queries)