Гарантия в том, что ты поднял документ из этой коллекции Если это не так, то уже какое-то эзотерическое программирование получается - берёшь запись из product, но если не повезёт, там будет user или случайное число
Названия полей не дадут тебе никакую гарантию Ты берёшь юзера, добавляет ему поле product_id - и всё, твою проверку объект проходит, хотя не является продуктом
нет даже минимальной вероятности что ты залезешь не в ту коллекцию (если ты сам это не пролапатил, но такой случай не зависит от субд), поэтому нет смысла делать префиксы к полям. Ты говоришь о структуре документа а это скорее всего про нормализацию данных и вообще не касается этой темы