Count는 문서의 수와 상관없이 매우 빠른 연산을 수행하지만
조건이 추가될 경우 속도가 느려진다.
Distinct
Collection 내의 주어진 Key의 고유한 값을 반환함.
People Collection 에 다음과 같은 문서가 있다고 가정
age key 에 distinct를 호출
db.runCommand( { “distinct” : “people”, “key” : “age” } )
결과 { “values” : [20, 35, 60], “ok” 1 }
**실습**
Group
SQL의 Group By와 동일함.
Distinct와 동일하게 runCommand 로 실행함.
Group의 포멧
“ns” -> 어떤 컬렉션에서 Group을 수행할 것인지 결정
“key” -> 지정한 컬렉션에서 문서를 그룹핑할 키를 지정. Group by column 과 동일함.
“$reduce” -> 컬렉션 내의 각 문서들에 대해서 한번씩 호출한다. Function의 인자는 총 2개인데,
하나는 해당 문서를 받고, 또 다른 하나는 현재까지 누적 계산된 문서를 받는다.
누적계산은 사용자가 정의할 수 있다.
“$keyf” 함수를 키로 사용한다. 하나의 키가 아닌 복잡한 조건의 Key를 사용하려 할 때 쓴다. “필수 아님“
“cond” 그룹핑할 표본을 정의한다.
“finalize” SQL의 Having과 같음. 그룹핑 될 결과로 다시 한번 연산할 때 사용한다.
“initial” 누적 계산할 항목을 정의한다.
in : tag가 있다면 (같다면)
**실습**
* 데이터 준비
*Group
number 1을 쓰겠다.
curr : 현재문서 / result : 누적 문서
현재 문서가 중복된 것이 있다면 count+1 -> 그러면 페이지 별로 count가 들어감
*90이상인 값만 출력 조건을 줌
* group을 밖으로 빼 보았다
* 더욱 간결하게 출력된다.
'DB > Mongo DB' 카테고리의 다른 글
[MongoDB] Spring과 연결해 사용하기 (0) | 2016.06.02 |
---|---|
[Big Data] MapReduce (0) | 2016.06.01 |
[Big Data] 쿼리써서 데이터 찾기3 (개수제한) (0) | 2016.06.01 |
[Big Data] 쿼리써서 데이터 찾기2 ($elemMatch) (0) | 2016.05.31 |
[Big Data] 쿼리써서 데이터 찾기 ($gt, $in, $lt, $nin, $or, $mod) (0) | 2016.05.31 |