Detailed review of the challenges faced and choices made while developing a multi-tenant SaaS CMS with Mongo and .NET (C#), including modeling for data integrity in a world without joins or transactions, leveraging dynamic schema elements while using the C# driver, embracing sharding, ensuring scalability and security, using the Aggregation framework, and working around limitations (case sensitivity, numeric precision).