This limitation is a serious risk for a lot of production systems.
The only way to safely stay under the document size limit is to use MongoDB as a relational database: wherever a record might contain any non-fixed size lists, you have to put those in separate documents, as once in a million times everything _will_ grow longer than you've expected.
And once any of the document reaches 16MB, your production system is broken. You can patch up your system, to split that new thing that became too long in the "offending" document, but that is not operation/support, it's a never-ending crisis managent.
And once you've split them all up, you will realise that you are using MongoDB as a relational database, just without rdbms features. It just defeats the purpose.
Saying that 16MB is the maximum _recommended_ document size is all fine, a design can easily be built around it, ensuring that the wast majority of documents is going to fit within that size. And anything above that will be significantly slower. Once in a million, it can be slow all right. But if a document above the limit can not be handled at all with the system without significant development, that renders the system highly vulnerable and completely intolerant to a lot of unexpected events (and to DOS attacks). Which very significantly limits it's usability.
This limitation is a serious risk for a lot of production systems.
The only way to safely stay under the document size limit is to use MongoDB as a relational database: wherever a record might contain any non-fixed size lists, you have to put those in separate documents, as once in a million times everything _will_ grow longer than you've expected.
And once any of the document reaches 16MB, your production system is broken. You can patch up your system, to split that new thing that became too long in the "offending" document, but that is not operation/support, it's a never-ending crisis managent.
And once you've split them all up, you will realise that you are using MongoDB as a relational database, just without rdbms features. It just defeats the purpose.
Saying that 16MB is the maximum _recommended_ document size is all fine, a design can easily be built around it, ensuring that the wast majority of documents is going to fit within that size. And anything above that will be significantly slower. Once in a million, it can be slow all right. But if a document above the limit can not be handled at all with the system without significant development, that renders the system highly vulnerable and completely intolerant to a lot of unexpected events (and to DOS attacks). Which very significantly limits it's usability.