0👍
In my experience, yes, separated DB(s) per customer is the best solution in the long run.
In your main administrative DB you can map customers to DB-servers giving you a lot of flexibility, for example to give more resources to big customers without impacting small ones.
Also consider using storage.directoryPerDB:true
config option to reclaim disk space after deleting a DB (trial expired customer)
Source:stackexchange.com