Моя база данных выглядит так:
{email:"user", contacts:
[
{emailContact:"test", firstName:"test", lastName:"test", messages:
[
{email:"user", content:"hi", date:"ISODate(...)"}
{email:"test", content:"how are you?", date:"ISODate(...)"}
{email:"user", content:"im fine", date:"ISODate(...)"}
]
},
{emailContact:test2, firstName:"test2", lastName:"test2", messages:
[
{email:"user", content:"hahaha", date:"ISODate(...)"}
{email:"test2", content:"yea thats right", date:"ISODate(...)"}
{email:"user", content:"xd", date:"ISODate(...)"}
]
}
]
}
И мне нужно получать сообщения с определенными индексами.Например, сообщения с индексом 4,5,6.
Я пробовал уже несколько похожих:
db.contacts.aggregation([{$match:{email:"elo@elo.pl"}},{$unwind:'$contacts'},{$match:{'contacts.emailContact':'user@user.pl'}},{$unwind:'$contacts.messages'},{$project:{email:1,content:1,date:{$slice:['$contacts.messages',4,6]}}},{$replaceRoot:{newRoot:'$contacts.messages'}}])
Спасибо за любую помощь