У меня есть следующие данные, хранящиеся в mongodb. Я хочу выполнить сложный запрос. Я хочу получить последние 5 сообщений из последних 10 сообщений.
Как я могу это сделать?
[ { _id: 5e7bb4c699aa010ca9bfeed4,
payload: 'Message 1 from A to B',
sender: 'A',
reciever: 'B',
conversationId: 5e7ba776c55fc40b216b0d12,
time: 2020-03-25T19:45:10.029Z,
__v: 0 },
{ _id: 5e7bb52a99aa010ca9bfeed5,
payload: 'Message 1 from B to A',
sender: 'B',
reciever: 'A',
conversationId: 5e7ba776c55fc40b216b0d12,
time: 2020-03-25T19:46:50.171Z,
__v: 0 },
{ _id: 5e7bb57f99aa010ca9bfeed6,
payload: 'Message 2 from A to B'
sender: 'A',
reciever: 'B',
conversationId: 5e7ba776c55fc40b216b0d12,
time: 2020-03-25T19:48:15.965Z,
__v: 0 },
{ _id: 5e7bde6e86caad11b4a7a2a0,
payload: 'This is messages from B to A',
sender: 'B',
reciever: 'A',
conversationId: 5e7ba776c55fc40b216b0d12,
time: 2020-03-25T22:42:54.017Z,
__v: 0 },
{ _id: 5e7bb68f99aa010ca9bfeeda,
payload: 'Message 1 from B to C',
sender: 'B',
reciever: 'C',
conversationId: 5e7bb66d99aa010ca9bfeed9,
time: 2020-03-25T19:52:47.243Z,
__v: 0 },
{ _id: 5e7bb6d599aa010ca9bfeedb,
payload: 'Message 1 from C to B',
sender: 'C',
reciever: 'B',
conversationId: 5e7bb66d99aa010ca9bfeed9,
time: 2020-03-25T19:53:57.805Z,
__v: 0 },
Я пробовал следующий запрос, но он не работает
const qmessages = await messages
.find({
conversationId: {
$in: mapedId,
},
})
.or([
{
sender: req.user.fullname,
},
{
reciever: req.user.fullname,
},
])
.sort({
conversationId: 1,
time: 1,
});
, где mapedId is the an array of conversationsID
. если я добавлю .limit к моему запросу, он не будет работать, как ожидалось