## 11.1.3 Do MongoDB databases have schemas? 

MongoDB uses dynamic schemas. You can create collections without defining the structure, i.e. the fields or the types of their values, of the documents in the collection. You can change the structure of documents simply by adding new fields or deleting existing ones. Documents in a collection need not have an identical set of fields. 

In practice, it is common for the documents in a collection to have a largely homogeneous structure; however, this is not a requirement. MongoDB’s flexible schemas mean that schema migration and augmentation are very easy in practice, and you will rarely, if ever, need to write scripts that perform “alter table” type operations, which simplifies and facilitates iterative software development with MongoDB. 

## See 

SQL to MongoDB Mapping Chart (page 131) 

## 11.1.4 What languages can I use to work with MongoDB? 

MongoDB client drivers exist for all of the most popular programming languages, and many other ones. See the latest list of drivers 2 for details. 

## See also: 

http://docs.mongodb.org/manual/applications/drivers . 

## 11.1.5 Does MongoDB support SQL? 

No. 

However, MongoDB does support a rich, ad-hoc query language of its own. 

## See also: 

http://docs.mongodb.org/manual/reference/operator 

## 11.1.6 What are typical uses for MongoDB? 

MongoDB has a general-purpose design, making it appropriate for a large number of use cases. Examples include content management systems, mobile applications, gaming, e-commerce, analytics, archiving, and logging. 

Do not use MongoDB for systems that require SQL, joins, and multi-object transactions. 

## 11.1.7 Does MongoDB support transactions? 

MongoDB does not support multi-document transactions. However, MongoDB does provide atomic operations on a single document. 

For more details on MongoDB’s isolation guarantees and behavior under concurrency, see FAQ: Concurrency (page 758). 

