Я создаю базовую систему обмена сообщениями с помощью mongodb и храню сообщения, подобные этому:
Схема сообщений:
{
senderId: ObjectId,
receiverId: ObjectId
createdAt: Date
}
Я хочу отобразить все потоки сообщений между пользователем и другими пользователями,Поэтому я хочу отфильтровать все сообщения, содержащие запрашивающего пользователя.
Но после этого шага я не знаю, как сгруппировать сообщения по senderId или receiveId.
$group: {
_id: {
senderId: '$senderId',
receiverId: '$receiverId'
},
messages: {
$push: {
_id: '$_id',
body: '$body',
attachment: '$attachment',
senderId: '$senderId',
receiverId: '$receiverId'
}
}
}
Эта группировка обрабатывает отправленные сообщения.запрашивающим пользователем и сообщения, полученные отправляющим пользователем в виде 2 разных групп.
В идеале я могу сгруппировать все сообщения между 2 пользователями, а затем выбрать последнее сообщение на основе времени созданного времени.
Любая помощь будет оценена.