Let’s say I have an application that is going to allow users and organizations worldwide to collaborate on tasks for different projects. It allows for recording tasks that are assigned to different users, organizations and projects. I need to store potentially tens of millions of users, tens of thousands of organizations, tens of millions of projects and hundreds of millions of tasks (eventually). The application needs to be able to retrieve data from any perspective, so it may need to show all tasks for a given user, organization or project, and will also need to be able to show all users, organizations and projects for a given task. And really, it may need to also show all projects a user has participated in or all users for a particular organization.
Is this kind of data problem appropriate for Mongo or should I really be looking at a relational DB? It would be nice to take advantage of the benefits of a document storage system in terms of these individual data entities (collections), along with the flexibility of Mongo, but the need to relate these different data entities as many-to-many in multiple ways is giving me pause. On the other hand, these kinds of joins don’t go deep, so perhaps not an issue?