Mongo also doesn't have a concept of a transaction so it needs these types of atomic update mechanisms in order to be able to do much of anything sanely. This isn't a problem with SQL which has ACID. I'm not saying that's always the right thing or a good thing, just that your example and conclusion isn't technically correct. Mongo's update capabilities are not more sophisticated but are necessarily different.
That being stated, I'll agree that similar mechanisms for the JSON fields would make sense for Postgres to consider in the future.
> That being stated, I'll agree that similar mechanisms for the JSON fields would make sense for Postgres to consider in the future.
I think they are working on adding modification functions for hstore right now, and the plan is to also add them to JSON once that is done.
You could easily implement your own such functions right now, since PostgreSQL already support atomic modifications in of columns with UPDATE with no overwriting. This statement is safe to use to increment a counter.
UPDATE c SET counter = counter + 1 WHERE id = 42;
And since that is the case this should also be safe.
UPDATE c SET data = my_json_array_append(data, 7) WHERE id = 42;
That being stated, I'll agree that similar mechanisms for the JSON fields would make sense for Postgres to consider in the future.