Hi Thibaut

From my experience, I generally use a couple of heuristics to determine when to embed vs extract to a collection. If the data to be embedded is unbounded, then you must extract, otherwise you can run the risk of breaching the document size limit. From there I look at the data use characteristics. Is the system read or write biased. If it’s more read heavy then I’d opt for embedding to lower the work of the lookups required to project a full document. Depending on how write heavy it is indicates a turning point to collections (for me anyway). You can utilise findOneandUpdate to bring your update to one command, see: db.collection.findOneAndUpdate() - MongoDB Manual v7.0

I use a combination of embedding and extract to collections in my projects, depending on what the system requirements are and also the non functional requirements.

Again it really depends on your data use cases, the amount of expected data stored and the complexity of the code maintenance. You need to include in your thoughts the cost of the system in maintenance and execution.

Hope that helps.

Craig.