Documents that increase significantly over time can be ticking time bombs. Network bandwidth and RAM usage are likely to become measurable bottlenecks, forcing you to start all over again.
First, consider two collections: Customer and Payment. Thus, the grain is quite small: one document per payment.
Then you have to decide how to model your account information, such as credit cards. Let's look at whether client documents contain arrays of account information or whether you need a new collection of accounts.
If the documents of the account are separated from the documents of the client, the loading of all the accounts of one client into memory requires the selection of several documents. This can lead to additional memory, I / O, bandwidth, and CPU usage. Does this mean that a collection of accounts is a bad idea?
Your decision affects payment documents. If invoice information is embedded in a customer document, how would you link to it? Individual account documents have their own _id attribute. With built-in account information, your application will generate new identifiers for accounts or use account attributes (for example, account number) for a key.
Can a payment document actually contain all payments made in fixed time frames (for example, a day?). Such complexity will affect the entire code that reads and writes payment documents. Premature optimization can be fatal for projects.
Like account documents, payments are easily referenced if the payment document contains only one payment. For example, a new document type, such as a loan, may refer to a payment. But could you create a credit collection or insert credit information in your billing information? What happens if you later need to apply for a loan?
To summarize, I was successful in a large number of small documents and many collections. I implement links with _id and only with _id. Thus, I am not worried about ever-growing documents destroying my application. A schema is easy to understand and index, because each object has its own collection. Important objects are not hidden inside other documents.
I would like to hear your findings. Good luck