Самый простой способ - используйте syncronized. А вообще монга внутри себя использует блокировку на документ при операциях изменения, так что заморачиваться не стоит.
Судя по коду, у вас идет именно создание новой записи. Обновления нет вообще.
Строка: $post->ratings()->save($rating);
Делает лишь верную установку post_id у Rating модели и сохраняет Rating.
Можно создать таблицу roles, где будут храниться типы пользователей. И если у вас пользователь может принадлежать только к одному типу, то в таблицу users надо добавить колонку role_id, которая и будет указывать на конкретный тип.
На JVM хорошая поддержка многопоточности, а в Scala отличная библиотека коллеций. Да и много решений в поледнее время пишутся на Scala (Spark, Kafka, ...)