We do believe that TingoDB must be targeted somewhere in the middle between trivial key-value stores and full blown NoSQL solutions. Consider to use it when you need small to middle app demands in lightweight database for your NodeJS project. But remember that you always can grow when you need it.
MongoDB compatible API
For features that TingoDB implements it exposes them thru 100% MongoDB compatible API. As the proof for this statement all tests are designed to work on both MongoDB using its native driver and TingoDB. More other, significant part of tests is taken as-is from NodeJS driver project.
TingoDB supports B-tree indexes that stored in memory. Indexes are used for search query optimizations and mimics MongoDB indexes (spare, unique and so on). Compound indexes are not supported yet.
Search, Sorting, Grouping and Map Reduce
Full set of MongoDB search operators is supported. Both search and indexes are supported for embedded arrays. Sorting is fully supported and also using indexes when possible. Grouping and Map Reduce works as it designed to be.
Atomic updates and concurrent access
NodeJS is not multi-threaded application, but still with asynchronous approach you can make many things in parallel. TingoDB is safe for this kind of usage and supports atomic updates the same way as its big brother.
TingoDB uses append only files for storing of collection documents. This ensures that you never lost all your data and can rollback to good copy if any damage happens.
Reasonable big data-sets
TingoDB uses memory only for indexes and optional cache. It loads collection documents using file access operations. We estimated memory consumption vs data-set size ratio as 1:100. This of course depends on amount of indexes that database uses.