Запросы чата Mongodb/Java и архитектура модели с потоком/сообщениями

#java #mongodb

Вопрос:

Я работаю над проектом Java spring, используя mongodb. Мне любопытно узнать, следует ли мне разделить поток/сообщения на две модели

 -- threads
----id
----fromUser
----toUser
----lastMessage 


-- messages
----id
----fromUser
----toUser
----lastMessage
----createdAt
----updatedAt
 

в настоящее время я пытаюсь создать список потоков от пользователя, который выглядит следующим образом, но я не уверен, как выполнить заказ, созданный — — — но также способ создания списка, но отображающий только самое последнее сообщение потока.

 @CrossOrigin
@GetMapping("/api/chat/threads/{fromUserID}")
@ResponseBody
public BasicDBObject listChatFromUser (
  @PathVariable(value="fromUserID", required=false) String fromUserID
) {
    List<Chat> chats = MongoApp.mongoOps().find(query(where("fromUserID").is(fromUserID)), Chat.class);

    BasicDBObject obj = new BasicDBObject();
    obj.put("chats", chats);
    obj.put("count", chats.size());

    return obj;
}