I found the best way to do migrations is with vanilla SQL. I wrote a little tool to read migrations from SQL files in a directory, send them to the server and keep track of which ones have already been applied. Simple and easy.
The big benefit of migration is that your app code doesn't have to deal with every possible schema that you've ever used; it can rely on the data being uniform.
I'm very happy with the switch; wouldn't go back to Mongo for anything.
We did the move maybe 4-5 years ago? At least in the JavaScript world, this makes your life so so much better.
Of course, you still have to handle migrations, but at least you have transactions :)
I can imagine a future with specialized ORMs designed around jsonb, but the current state of the art is probably not as bad as you think.
http://docs.servicestack.net/releases/v4.5.6#postgresql-data...
There is also Marten which is an ORM that offers a full document database interface all backed by Postgres JSON columns.