Can Mongodb support databases for complex projects?

  mongodb, question

I recently made an O2O platform project (including management, appointment, payment, access to WeChat, etc.), and at the beginning, I chose the standard MEAN as the technical selection for consideration of personnel capacity and cost. It is really fast to do, but with the iteration of project requirements, I feel that there are many limitations in the selection of this technology, especially mongodb, mainly as follows:
1. mongodb does not support the operation of join and can only be expanded by populate. Therefore, any query and statistics across tables are very troublesome. We do a lot of things through data redundancy now, that is, simply storing data fields in several sets.
2. mongodb does not support transactions, so many rollback operations are now handled in the synchronization framework of the business. The code is very redundant and is still not rollback in the real sense in essence.

I’ve heard that there are more and more pure MEAN projects in the industry. I don’t know how people solve the above problems. Or does the core business logic still use relational databases?

Some of my projects have encountered join problems. My solution is to store the corresponding ObjectId and use mongodb’s aggregation to achieve the goal of join. I used the WiredTiger engine, so I solved the problem of locking the database when reading and writing a lot. Also, try to avoid the traditional sql design thinking and development logic on the design database. A collection tries to correspond to an event. Later, due to the expansion of the project, I introduced the development mode of worker, and changed the relationship of logic layer to worker with independent threads. at present, it is good to deal with a large number of concurrent events without online (similar to the effect of robbing red packets for the number of people without online). A little humble opinion is for reference only.

There is also the limitation of mongodb to people who are accustomed to sql development mode, which makes people very unaccustomed. However, mongodb’s advantages are obvious in the era of big data. At present, the basic structure of my project is:
Server: nginx+mongodb+php-fpm+ubuntu
Main Program: MVC(php) // Value Provides Logical Relation Exchange
Auxiliary procedures: Workers // Multithreading Processes Corresponding Logical Relationships for Mutual Exchange of Databases