- 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.
If you're careless with your data, yes. "With great power comes great responsibility."
At first at least, haven't checked in on that in awhile
In 99% of the cases, even if you need a flexible schema, PostgreSQL will remain the best choice.
But what's the advantage of Postgresql in this case?
Also, query for query, Mongo isn't going to be that much slower than PG, and faster for some usage patterns...
Note: I work at MongoDB
Isn't firebase built on top of mongoDb?
This is not easy to do with PostgreSQL, which we use for all other scenarios requiring a DB.