Дело в том, что MongoDb (да и вообще NoSQL решения) не подразумевает отношений между коллекциями (таблицами в терминологии RDBMS). По этой же причине нет внешних ключей, нет транзакций (есть только атомарные операции), как правило нет четкой схемы данных.
Это та цена, которую Вы платите за легкость в горизонтальном масштабировании.
По этим причинам многие вещи обязано реализовывать и контролировать приложение. Тот же контроль внешних ключей и транзакции, например. Реализация этих вещей во многом зависит от бизнес-процессов и логики приложения. Именно поэтому нет какого-то универсального решения и рецепта.
В Вашем случае, Вы САМИ должны прописывать в contact, access поле userId. Вы САМИ должны контролировать корректность его заполнения и актуальность значений.
Все это, безусловно, можно реализовать в MongoDB. Однако, мне кажется для Вашей задачи больше подойдут Postgres, MSSQL, etc.
Советую посмотреть:
https://habrahabr.ru/post/259219/ https://habrahabr.ru/post/260291/