Когда использовать подзапросы SQL по сравнению со стандартным соединением?

Итак, предположим, что у вас есть такая схема:

{
 _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)

Немного вещей:

  1. Если вы не используете mongodb ObjectId, код не будет работать для вас, но вы все равно можете использовать postDate вместо id и текущего post postDate вместо curId.
  2. Позаботьтесь о порядке при получении следующих / предыдущих сообщений, чтобы получить следующее сообщение, вам нужно сортировать asc, чтобы получить предыдущий пост, вам нужно отсортировать desc.
  3. Я не знаком с мангустом, поэтому над скриптами написаны скрипты оболочки mongodb.
34
задан Brad Krusemark 25 January 2011 в 23:00
поделиться