> For the complete documentation index, see [llms.txt](https://gchandra.gitbook.io/big-data-and-tools-with-nosql/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gchandra.gitbook.io/big-data-and-tools-with-nosql/nosql/mongodb/mongodb-best-practices.md).

# MongoDB Best Practices

1. **Store all data for a record in a single document**: This is about leveraging MongoDB's document-oriented nature. Keeping related data together reduces the need for joins and improves read performance.
2. **Avoid large documents**: MongoDB has a document size limit (16MB). Large documents can slow down operations. It's also about working efficiently with the data in memory and keeping the working set size manageable.
3. **Avoid unnecessarily long field names**: Since field names are stored with each document, shorter names help reduce storage space. However, don't sacrifice clarity.
4. **Eliminate unnecessary indexes**: Indexes speed up reads but slow down writes and consume disk space. Keeping only necessary indexes optimizes performance and storage.
5. **Remove indexes that are prefixes of other indexes**: If you have an index on `{a: 1}` and another on `{a: 1, b: 1}`, the first one is often unnecessary. MongoDB can use the compound index for queries using the single field index.

Camel Case:

* Camel case merges words, with each word starting with a capital letter except for the first word. It's commonly used in programming languages like JavaScript.
* Example: `userName`, `userEmail`, `accountBalance`, `numberOfOrders`

Snake Case:

* Snake case separates words with underscores and doesn't capitalize letters. It's frequently used in languages like Python, especially where readability is emphasized.
* Example: `user_name`, `user_email`, `account_balance`, `number_of_orders`

MongoDB community and documentation often favor camelCase for field names, reflecting its JSON-like document structure and JavaScript roots. This is more about consistency with JavaScript and JSON object property naming conventions rather than a special feature or enforced standard by MongoDB.
