Краткий ответ: Нет, вы не должны использовать UserModel в качестве вложенного документа MessgeModel.
Длинный ответ: во-первых, пересмотрите свое наименование. Вы на самом деле определяете схемы здесь. Позже вы будете связывать модель с каждой из этих схем. Таким образом, UserSchema и MessageSchema были бы более подходящими здесь.
Но это не уместно. Что касается вашего вопроса, ваша схема MessageModel не должна содержать встроенные документы, представляющие пользователей, если нет отношения 1 к 1. Тем не менее, я ожидаю, что каждый пользователь будет связан со многими сообщениями (надеюсь). Таким образом, вы не хотите новую копию пользователя (каждый с новым _id
) для каждого сообщения, которое он создает. Вам нужен только один канонический документ для каждого пользователя и ссылка на него в MessageModel.
Теперь использование строковой ссылки может быть правильным выбором для вас. Но если вы ожидаете выполнить запрос к MessageModel, в котором вы хотите, чтобы атрибут user
заполнялся фактическим документом UserModel, то вам нужно будет использовать ref .