When choosing a technology, the most important thing to me is adoption, which one are most people using and therefore is least likely to go by the way side. Nothing worse than going to the trouble of learning a new technology, only for it to go out of fashion and either no longer be useful to you, or worse again to be stuck using a technology that no one is interested in or maintaining.
My favoured measure of adoption is number of jobs posted on monster.com, Mongo 1,385, MongoDB 4,083, Cassandra 2799 - Don't know how to do the query for Mongo OR MongoDB, but Mongo has at least 50% more jobs, potentially almost twice as many jobs as Cassandra.
Looking at their Github repository, 1,200 watching Mongo, vs 512 for Cassandra, 17,000 stars vs 5,000, 4,300 forks vs 2,500, 396 vs 280 committers. All round, Mongo seems to have more adoption, though I would have done these numbers originally about a year ago, and it seems to me that Cassandra may have closed the gap in the meantime.
ACID Semantics refers to the 4 key properties of a persistance system or database.
From the technical perspective, probably top of the list on decision criteria is ACID, and Cassandra ain't, it's eventually consistent, so one users right is not immediately visible to another user, partial transactions can be saved etc, Mongo always had better ACID support in that within a single collection you had ACID semantics, but as of their 4.0 release they now sport full ACID support, and in my mind anything that involves a financial transaction needs ACID.
The traditional relational database where we organise data in columns and rows, has had acid semantics forever. There are however scalability limits on such a system. Fundamentally, to achieve ACID semantics, updates get applied one at a time, on a single server. The scalability limit is pretty high, I've had system processing around 15,000 transactions per SECOND on such a system, that's around 21 million complex transaction per hour, hardwork on a relational database but it worked affectively in an environment where 99.999% success rates where not acceptable. Relational databases can always be sharded, no the real reason we need to get away from relational databases where more financial than technical.
But for me, there another, almost as important, reason for No SQL databases. In the old worlds, we had objects, invoices, orders, requests etc. that our code manipulated, and then to save them, we need to map those object to a relational database with it's tables and columns, which created a whole layer of complexity that involved piles of boiler plate coding, or Object Relational Mapping solutions, like hibernate etc. that reduced the boiler plate code at the expense of a massive layer of complexity in the application.
From the programming perspective, IMHO Cassandra is not really a NoSQL database, it's more of a CQL, Cassandra Query Language is quite similiar to SQL, the overall data model is based around tables, rows and columns, just like your traditional relational database. The only real difference between Cassandra and the relational database is that they have traded in their ACID semantics in order to have greater scalability, and really, that's a level of scalability beyond anything I am likely to need now, or indeed in the foreseeable future. It would seem highly unlikely in my social enterprise endeavours that I'd go beyond the workload that a more traditional PostGres DB would support.
MongoDB on the otherhand is a document oriented database, not tables and columns but complete complex objects stored as entities in the DB, that gives you the kind of simplification of the programming model described in my mongo tutorial, dump the Object Relational Mapping Tools, just save your JSON object direct into the DB, that I find very attractive indeed.
I really, really like the idea of the MEAN Stack, there is no equivalent I know of for Cassandra, in fact googling CEAN would get you a stack with Couchbase, I do like the idea a lot of having a standardised development stack that gets used together, and with the MEAN Stack, the wonderful thing is that the entire stack from the front end all the way to the backend is all speaking pure Javascript, to me that is a huge advantage, I have enough to be learning without having to worry about learning multiple languages for different components in the stack, and of course if I where to end up hiring developers, it would be a whole heap easier to get full stack developers when the full stack is in a single language, using a standardised set of components.
On religious grounds of course, I'd have a preference for Cassandra from Apache, but MongoDB is fully open sourced, so despite the fact that there's a $7.5B public company behind it, if Larry Ellison does gobble them up, I'm pretty sure that there will still be an alternative available to paying the Oracle tax. Amazon already offers a Mongo Compatible database offering, as they do for Cassandra. And whilst for religous purposes, I'd prefer Apache, in practical terms however, I quite like the idea that I at least have the option to buy a support plan. As a one man band I'm unlikely to even shell out the minimum $49 a month, but I like having the option... On religious grounds, don;t like that Cassandra came out of facebook.
Love the idea of MongoDB Atlas, to be able to choose Azure, Amazon or Google as the hosting company and have a Mongo managed cluster provisioned there seems like a huge win, in terms of lock in going forward, I have the suspicion that Cloud lock in will become more prevalent than database lock in, so having that boxed off in advance in my mind is a huge win.