Of course, the document size will be unbounded because each user may block or like any number of other users. So before I update a document, I must check that its size is less than 16mb before writing. How is this done?
I believe this may have been mentioned in some of your other discussion topics, but large documents and unbounded arrays are both schema design anti-patterns that negatively affect performance and efficient use of server resources.
If an insert or update results in a document that is larger than the maximum BSON size, you will get a server exception that your application can handle. However, what would your application do in this case?
I recommend considering a different schema design approach to keep your document sizes more manageable.
This seems like a different question, perhaps? If you are reading documents from a remote MongoDB deployment via aggregation the BSON document size should always be less than the limit (or result in an exception if you are trying to create result documents that are too large).