NoSQL databases can be divided into 4 major type
Key-Value: The simplest one, can be thought of as a hashmap. Data can grow exponentially without impacting performance much, as long as your keys are unique.
Example: Redis, Riak
Document Based: This is kind of an extension to key-value format, by providing a proper format to the value/ document being saved. Meta-Data is provided to make sure documents are tagged and searchable.
Example: MongoDB, CouchDB
Column Based: In contrast to Row Based storage of normal RDBMS, a column based storage, keeps data stored columnwise. This gives an advantage for searching data based on columns easily and at the same time lets your data grow upto large levels by supporting distribution of data.
Good description of Column-based storage: https://en.wikipedia.org/wiki/Column-oriented_DBMS
Example: Cassandra, Vertica
Graph Based: This kind of database is ideal for data that is connected to each other in some logical way. Or in simple words, if you can represent your data in form of graph. One good example is A is friend of B, B is friend of C, so we can recommend A to be friends with C.
Example: Neo4J, OrientDB
CAP Theorem (you can choose 2 of the three- Consistency, Availability and Partition tolerance) Based analysis of NoSQL databases