집계 명령어(1)

2022. 11. 1. 11:42DB/MongoDB

집계 명령어 필요성 : 기존의 find로는 원하는 데이터로 가공하는데 한계가 있음. grouping, filtering 등 다양한 연산 적용 가능

 

MongoDB의 집계 방법론

  맵-리듀스 집계 파이프라인
자유도 좋다 나쁘다
처리 속도 보통 가장 좋다
램 사용량 높음  낮음
처리 위치 자바스크립트 엔진 몽고디비 내부

집계 처리를 위한 주요 스테이지

$project : 출력 도큐먼트 상에 배치할 필드를 지정

$match : 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할 수행

$limit : 다음 단계에 전달될 도큐먼트의 수를 제한

$skip : 지정된 수의 도큐먼트 건너뛰기

$unwind : 배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성

$group : 지정된 키로 도큐먼트를 그룹화

$sort : 도큐먼트 정렬

 

SQL과 몽고디비 스테이지 비교

WHERE $match
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit

 

집계 명령어의 형식 : aggregate()

db.collection.aggregate([{$match:{ }}, {$project:{ }},{ //다른 스테이지..}])

 

스테이지 기술 순서 : 스테이지들을 (일반적으로) 기술하는 순서가 있다.

$match -> $project -> $sort -> $skip -> $limit

 

- $project : 필드의 출력 여부와 새로운 필드를 생성할 수도 있음

 

- $match : 검색 조건의 명세

 

- $group : 그룹화. 산술 연산, 극한 연산, 배열 연산을 지원. _id 필드를 기술하지 않으면 "오류"가 발생

'DB > MongoDB' 카테고리의 다른 글

집계 명령어(3)  (0) 2022.11.14
집계 명령어(2)  (0) 2022.11.01
쿼리 작성하기(2)  (0) 2022.10.31
쿼리 작성하기(1)  (0) 2022.10.31
MongoDB 기본 명령어(3)  (0) 2022.10.31