본문으로 바로가기

[Big Data] 쿼리써서 데이터 찾기4 (집계)

category DB/Mongo DB 2016. 6. 1. 10:28

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을 밖으로 빼 보았다

* 더욱 간결하게 출력된다.