What is MongoDB data base and what does it support
- Is a document oriented data base.
- Has a dynamic schema (db schema can be created dynamically when you run quires, insert or updates documents in collection).
- Document access is guaranteed to be atomic. Supports atomic operation on a single document. There is no support for transaction on multiple documents or documents across multiple collections.
- It supports Indexes and Secondary Indexes.
- Doesn't use SQL language like the one use for RDMS. Instead it uses an API like language for data manipulation and quires.
- It uses JSON as a document format when interacting with external world.
- Documents and data base data are stored in a binary BSON format on the disk by the engine although.
- Data normalization is not a primary goal for document stored in MongoDB. Instead of trying to normalize all data stored in collection in Mongo you are advise to use embedding for 1-1, 1-many, many-1 and many-many relationships. Of course if this is not aligned with your application data access path you can still normalize data and use the _ID as a reference across tables. But this will be client site to enforce this to keep the data consistent.
- Support single and multi key indexes.
- A single file you can save can be up to 16MB in size. To store larger files you can use gridfs.
What is not supported in MongoDB
- Doesn't' supports joins.
- Doesn't support RDMS SQL language.
- Doesn't support transactions across multiple collections.
- Doesn't support transactions across multiple documents.
- Doesn't natively support constrains (example are foreign keys in RDMS tables). If you need a mechanism like this you would need to enforce it on the client site. Often you can lower the requirements for this feature when using a smart documents schema with embedded documents.