Да предположим, че имате схема като тази:
{
_id,
text
}
Предполагам, че _id е mongo ObjectId, така че съдържа дата на публикуване и мога да сортирам по него
Да приемем, че отворих текущата публикация с id, равен на ObjectId( "43cc63093475061e3d95369d")
(вместо това ще използвам curId
) и трябва да знам следващия и предишния. Също така нека помислим, че трябва да получим всички публикации една по една, подредени по дата на създаване в низходящ ред:
Вземете следващата публикация, която можете да харесате:
db.posts.find({_id: {$gt: curId}}).sort({_id: 1 }).limit(1)
Вземете предишна публикация, която можете да харесате:
db.posts.find({_id: {$lt: curId}}).sort({_id: -1 }).limit(1)
Няколко неща:
- Ако не използвате mongodb
ObjectId
горният код няма да работи за вас, но все пак можете да използватеpostDate
вместо id и текуща публикация postDate вместоcurId
. - Внимавайте за реда, когато получавате следващи/предишни публикации, за да извлечете следващата публикация, трябва да сортирате възходящо, за да извлечете предишна публикация, трябва да сортирате по низходящ.
- Не съм запознат с mongoose, така че горните скриптове са шел скриптове на mongodb.