MongoDB sort

민지킴·2021년 5월 3일
0

Document sort

— — — — — — — — — — — — — — — — — — — — — — — —— — —— — — — — - - - -

cursor.sort(DOCUMENT)

sort() 메소드는 데이터를 정렬할 때 사용됩니다.
메소드의 매개변수로는 도큐먼트의 어떤 key 를 사용하여 도큐먼트들을 정렬할지 알려주는 document(객체) 를 전달합니다. 
cursor.sort(DOCUMNET)

매개변수로 들어오는 DOCUMENT 의 구조는 다음과 같습니다.
{ KEY : value }

여기서 KEY 는 정렬할 기준이 되는 field 의 이름이고, value 의 값은 1 혹은 -1 입니다.
value 의 값이 1 이면 오름차순으로 정렬하고, -1 이면 도큐먼트들을 내림차순으로 정렬합니다.

또한 KEY 와 value pair 는 한 쌍 이상이 될 수 있고, 여러개의 KEY value pair 가 들어오면 가장 먼저 입력한 KEY 값이 우선권을 갖습니다.

ex) _id 필드를 기준으로 오름차순으로 정렬
db.orders.find().sort({_id:1})

ex) amount 필드를 기준으로 오름차순 정렬, _id 필드를 기준으로 내림차순으로 정렬

db.orders.find().sort({amount:1, _id:-1})

— — — — — — — — — — — — — — — — — — — — — — — —— — —— — — — — - - - -

cursor.limit(value)

limit() 메소드는 출력하는 도큐먼트의 갯수를 제한하는 메소드 입니다. 
메소드의 인자 value 의 값으로 숫자가 들어가는데, 이는 출력할 갯수입니다.

ex) orders 컬렉션의 모든 데이터를 조회, 갯수는 3개로 제한
db.orders.find().limit(3)

cursor.skip(value)

skip() 메소드는 출력할 데이터의 시작부분을 설정하는 메소드 입니다.
value 값으로는 생략할 데이터의 갯수가 들어옵니다.
즉, 메소드의 인자로 들어오는 value 값 만큼 건너뛰고, value+1 부터 출력하는 것입니다.

ex) 2개의 데이터를 생략하고, 3 번째 데이터부터 출력
db.orders.find().skip(2)

— — — — — — — — — — — — — — — — — — — — — — — —— — —— — — — — - - - -

응용

지금까지 살펴본 sort(), limit(), skip() 메소드를 활용하여 간단한 페이지네이션을 구현해 보도록 하겠습니다.

ex) orders 의 다큐먼트들을 최신순으로 페이지네이션 하는데, 한 페이지에 2 개씩 나타냅니다.

가장 먼저 showPage 함수를 정의해 줍니다.
*(MongoDB 는 자바스크립트 기반이기 때문에 MongoDB Shell 에서 자바스크립트 표현식을 사용할 수 있습니다.)

var showPage = function(page) {
return db.orders.find().sort({_id:-1}).skip((page-1)*2).limit(2);
}

profile
하루하루는 성실하게 인생 전체는 되는대로

0개의 댓글