BLOG ARTICLE skip | 1 ARTICLE FOUND

  1. 2012.09.09 [MongoDB] Query - 쿼리 옵션 (프로젝션, 정렬, skip, limit)


MongoDB 쿼리 옵션 모음



1. 프로젝션

프로젝션은 결과 값 도큐먼트에 대해 리턴할 필드를 지정하는 데 사용한다.


특별히 도큐먼트의 수가 많을 때 프로젝션을 사용하면 네트워크 지연(latency)과 디시리얼라이제이션에 들어가는

비용을 줄일 수 있다.


프로젝션은 다음과 같이 리턴할 필드로 보통 정의된다.


1) 리턴받고 싶은 필드를 정의하거나, 제외할 필드를 정의 할 수 있다.


db.users.find({}, {username:1})

==> 위 쿼리는 users 도큐먼트에서 username 필드와 _id 필드만을 리턴한다. _id는 디폴트로 항상 리턴한다.


포함시키지 않고싶은 필드는 0을 주면된다.

db.users.find({}, { address : 0, pay : 0})  // address와 pay 필드는 제외된 값이 리턴된다.



2) $slice - 리턴될 배열의 값을 어떤 범위 내에서 정할 수있다.

  예를 들어 리뷰를 여러 페이지로 나눠서 보여주길 원한다면 $slice 연산자로 제한할 수 있다.


도큐먼트 : { a:1, b:2, review:[{rating:3, ...},{},{},{},{},{},{},{},{},{}...] }


db.products.find({}, { review : { $slice: 12} }) // 결과값중 처음 12개만 가져온다.

db.products.find({}, { review : { $slice: -5} }) // 결과값중 마지막 5개만 가져온다.



$slice 는 2개의 숫자로 된 배열로도 가능하다. 각각. 스킵(skip), 리미트(limit) 를 나타낸다.


처음 24개의 리뷰를 제외하고 난 후 가져올 리뷰를 12개로 제한하는 쿼리

db.products.find({},{ review : { $slice : [24, 12]} })



3)   1) 과 2)를 조합하여 사용하는 예


바로위 쿼리에 review의 rating 필드만 가져오고 싶을때 


db.products.find({}, { review : { $slice : [24, 12], 'review.rating' : 1} } )








1. 정렬

정렬은 오름차순, 내림차순으로 정렬할 수 있다.


내림차순 

==> db.products.find({}).sort({ rating : -1 })


오름차순 

==> db.products.find({}).sort({ rating : 1 })


2개이상의 조건 

==> db.products.find({}).sort({ helpful: -1, rating: -1 })



추가중



YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST