웹사이트의 글을 읽다보면 이전글 또는 다음글로 이동하는 링크를 볼 수 있습니다. 만약 MongoDB를 사용하는 경우 이전 또는 다음글을 가져오려면 어떻게해야할까요?

# MongoDB에서 이전글 다음글 구현방법

아래의 쿼리문은 특정한 필드를 기준으로 이전 또는 다음에 위치한 아이템을 가져오는 방법입니다. 우선 아래와 같은 과정으로 수행합니다.

1. 기준이 되는 글 찾기
2. 이전 글 또는 다음글을 쿼리를 사용하여 찾기

먼저 아래는 현재 글을 찾는 일반적인 쿼리문입니다. _id 필드명을 기준으로 이전 또는 다음 값을 찾아보려합니다.

this_id = collection.find_one({'_id': myId})['_id']

변수 this_id는 기준이 되는 글의 id값을 저장하고 있습니다. 이 id값을 기준으로 이전 또는 다음글을 찾을 수가 있습니다. 먼저 다음글의 경우 아래와 같이 쿼리문을 사용합니다.

# 다음글 가져오는 Query

여기서 $lt을 사용하여 이전글의 id를 하나 가져옵니다. 이때 sort() 함수를 사용하여 date라는 필드를 기준으로 정렬합니다.
nextResult = collection.find({'_id': { '$lt': this_id }}).sort([('date', -1)]).limit(1)

# 이전글 가져오는 Query

이전글을 가져오는 방법은 앞의 $lt을 $gt으로 변경하면됩니다. 이번에도 역시 date 필드를 기준으로 정렬 후 하나만 가져옵니다.

prevResult = collection.find({'_id': { '$gt': this_id }}).sort('date').limit(1)

이처럼 MongoDB에서 이전글 다음글을 가져오는 방법을 쉽게 사용할 수 있습니다.