Maybe 'clumsy' was the wrong word. But you have to use it even within the same MongoDB database if you want 'transactional' behaviour and the implementation IS fairly complex.....
>I wouldn't say a two-phase commit is clumsy. It's needed in SQL Server if you want transactions across multiple databases.
>
>
>>I did say 'less need' not 'no need' :-}
>>But an 'entity' can be self-contained. e.g. One 'customer' record' might contain an array of 'orders', each of which contains an array of 'orderitems' and writing a new order back is one atomic action - so no danger of the 'order' being saved without the 'orderitems'.
>>
>>OTOH, if you wanted to update the stock levels for the products at the same time that would require a transaction. In those circumstances it's up to you to, for example, roll back the order if the product update fails.....
>>
>>MongoDB does handle transactions (but in a somewhat clumsy fashion) :
http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/