| - Highly-flexible. Because you're not developing against a schema, you can, for example, retool a feature and its data quickly without having to stress about migrations. A big advantage for a startup looking to move fast. - Queries look more like application code so you're not wasting mental cycles and time trying to translate an idea into a SQL query. From experience, this leads to less-fragile queries. - Little to no concern over injection attacks (you have to go out of your way to create potential for them). - Easier to write non-trivial queries than with SQL (IMO). - Type-casting data can be done in code as opposed to with SQL you have to use inline, platform-specific functions like field_name::timestamp. - A single source of truth for how to query and develop with it (with SQL, you're almost always developing against a flavor of it). - Scales reasonably well (and easily) for a majority of use cases. - No room for dogmatic fervor/confusion around a specific variety of MongoDB as there's only one variety. |
Why wouldn’t you need to worry about migrations without developing against a schema? You’ll need to worry more about migrations because your data will be more messy.