Firstly don't ever run anything as root!
Now that I've got that out of the way for application supporting services such as mongo and redis each of those should be running under their own username (The Ubuntu packages will handle this for you)
As for application specific such as nodejs it depends how paranoid you want to get. If you have a number of distinct applications which need to be isolated from one another then I suggest having one user per application as you mention. If you have multiple nodejs instances running that are all part of the same application then you could consider running those as the same application specific username.
One final point just to be clear, if you have multiple applications all sharing supporting services such as mongodb then you can either run distinct mongodb instances per application or run a single mongodb and instead use it's internal authentication system to do access control. I suggest the latter the management overhead will be greatly reduced.