집계 명령어(1)
2022. 11. 1. 11:42ㆍDB/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 |