본문 바로가기
DB/Mongo DB

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

by JiGyeong 2016. 6. 1.

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

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