And the author hasn't looked at a relation database in the last few years, either. PostgreSQL, Oracle, MySQL, and I'm sure the other big ones all have JSON (or similar) column types now that let you attach semi-structured elements to your records. You get all the benefits of a RDBMs (ACID, referential integrity, 40 years of history) _and_ all the benefits of NoSQL.
Seriously, there's no good reason not to start with PostgreSQL and only add MongoDB if you really have a good use case for it (you know, you suddenly need to be Web Scale). Personally (and professionally), I use both, with PostgreSQL as the main DB for everything and MongoDB for read-only collections of indexed data.
My challenge to devs out there: spend the hour it takes to learn SQL and understand what you can actually do with it. And, stop pretending that an RDBMS won't scale to meet your needs (spoiler alert: it will).
-Chris
What JSON column types exist in MySQL? I know that MariaDB supports COLUMN_JSON() on dynamic columns for SELECT statements (but no way to insert JSON), but MySQL seems to have no native JSON support. Even the third-party components such as mysqljson only import and export JSON, there is no internal JSON nor dynamic column storage and the values are stored in native MySQL datatypes in predefined columns.
Even in MariaDB, WHEREing from a dynamic column means parsing the whole table's dynamic columns (i.e. no index). It is little more than a native serialize feature, and in fact is stored internally as a blob.
The major feature (and I personally don't like it but perhaps that is because I've never had a good need for it) of MongoDB and brethen is that the "columns" (actually JSON array elements) are _not_ predefined. Thus you can have a table with the following "rows" (note the different columns):
["id":1, "type":"shirt", "colour":"blue"]
["id":2, "type":"pants", "size":"36"]