Итак, давайте предположим, что у вас есть схема, подобная этой:
{
_id,
text
}
Я полагаю, что _id - это mongo ObjectId, поэтому он содержит дату публикации, и я могу отсортировать по ней
Давайте рассмотрим, чтоЯ открыл текущий пост с идентификатором, равным 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
. - Позаботьтесь о порядке при получении следующей / предыдущей записи, чтобы получить следующую запись, вам нужна сортировка asc, для получения предыдущей записи вам нужна сортировка desc.
- Я не знаком с mongoose, поэтому приведенные выше сценарии - это сценарии оболочки mongodb.