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


출처 My Life Story | 복러브
원문 http://blog.naver.com/gjsfjqm/30003253480

mysql에서 LIMIT의 사용법

 

LIMIT는 출력되는 레코드의 개수를 제한할 때 사용됩니다가령 Table에 다음과 같이 입력되어있다고 가정할 때,

 

Item

Type

Amount

Day

주유비

책 구입

점심값

저녁값

담배구입

지출

지출

지출

지출

지출

40000

25000

5000

5000

1600

2003-12-24 10:00:00

2003-12-24 10:00:00

2003-12-24 10:00:00

2003-12-24 10:00:00

2003-12-24 10:00:00

 

처음부터 3개의 레코드를 읽어오려면 다음과 같이 SQL을 사용합니다.

 

mysql> select * from table LIMIT 3;

 

그럼 결과는 다음과 같이 출력되어집니다.

 

Item

Type

Amount

Day

주유비

책 구입

점심값

지출

지출

지출

40000

25000

5000

2003-12-24 10:00:00

2003-12-24 10:00:00

2003-12-24 10:00:00

 

또는 2번째부터 3개의 레코드도 가져 올수 있습니다그 사용법은 다음과 같습니다.

 

mysql> select * from table LIMIT 1, 3;

 

이때 주의 할 점은 첫번째 레코드의 시작은 0 입니다즉 LIMIT 1, 3 - 2번째부터 3 의 결과를 출력하게 됩니다그 결과는 아래와 같을 것입니다.

 

Item

Type

Amount

Day

책 구입

점심값

저녁값

지출

지출

지출

25000

5000

5000

2003-12-24 10:00:00

2003-12-24 10:00:00

2003-12-24 10:00:00

 

이 LIMIT를 사용하면 게시판등을 사용할 때 Paging시에 유용하게 사용될 수 있습니다.

 

'♨ DataBase > MySQL' 카테고리의 다른 글

MySQL 관련 10가지 TIP  (0) 2011.07.22
Mysql 함수 모음  (0) 2011.07.22
MySQL Query(쿼리)문 모음  (0) 2011.07.22
MYSQL 날짜 데이터 타입  (0) 2011.07.22
mysql 컬럼 삭제, 추가, 변경  (0) 2011.07.22
mysql에서 LIMIT의 사용법  (0) 2011.07.22
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST