Да и не нужна какая-то особая реализация для монги. В общем случае это просто скриптик, который должен запуститься до запуска новой версии приложения.
Это слишком простой взгляд на вещи. Вот у нас есть ядро, в котором есть свои миграции. У ядра есть разные версии - значит надо хранить все миграции, что бы можно было выполнить обновление перескочив через несколько релизов.
Ядро используется в кастомизациях, где тоже могут быть миграции и их тоже надо как-то хранить и запускать согласованно с миграциями в ядре.
Для ядра мы сделали аля супер-простой South для джанги - все миграции это скрипты в одной папке и есть коллекция, в которой храним список уже отработаных миграций. Но не хватает возможности добавлять миграции "снаружи", из кастомизаций, которые используют ядро как зависимость.