У нас массив со списком id чатов —
[1, 2]
Задача: из коллекции messages вытащить одно последнее сообщение в каждом чате.
Коллекция сообщений показана ниже.
created_at — время timestamp
[
{
chat_id: 1,
text: '123',
created_at: 1
},
{
chat_id: 1,
text: '123',
created_at: 2
},
{
chat_id: 1,
text: '123',
created_at: 3
},
{
chat_id: 2,
text: 'asd123',
created_at: 1
},
{
chat_id: 2,
text: 'asd123',
created_at: 3
},
{
chat_id: 5,
text: '123312',
created_at: 1
}
]
Запрос ниже не правильный, написал его чтобы была понятна суть.
db.message.find({chat_id: {$in: [1, 2]}}, {}, {
sort: {created_at: -1},
limit: 1
});
Такой должен быть результат:
[
{
chat_id: 1,
text: '123',
created_at: 3
},
{
chat_id: 2,
text: 'asd123',
created_at: 3
}
]
Прошу написать правильный запрос, чтобы я знал как это нужно делать.
И что будет, если у меня в коллекции messages будет 10 000 000 записей?