So whilst I was trying to design the database for my investment tracking app, I stumbled upon the question of what are the differences between traditional database designs and NOSQL, and what’s the most optimal way to design the NoSQL database for best performance.

After a quick look around, I discovered that there are no special things you need to do to design NoSQL schemas, apart from simply treating it like you would store info in a python dictionary: through the JSON structure.

An important point is, it’s almost always better to store data ‘pythonically’ than to store it relationally (which you can, via $lookup operator, which is similar to a JOIN). There are performance overheads for the $lookup operator.