집계 명령어(2)

2022. 11. 1. 12:26DB/MongoDB

- $unwind 스테이지 : 하나의 도큐먼트에 있는 배열 요소들을 분리하여 각각의 도큐먼트에 분배하는 역할 수행

배열의 요소를 분리하여 도큐먼트를 만들 때 배열의 순서(인덱스)를 기록하는 방법이 있다.

$unwind{

             path:<field path> //필드 이름과 경로

             includeArrayIndex : <string>  //새로 생성할 인덱스 필드 이름

             preserveNullAndEmptyArrays : <Boolean>   //true이면 빈 요소도 포함, false이면 빈 요소 불포함(default는 false)

}

- $out 스테이지 : 입력받은 도큐먼트를 컬렉션으로 저장하는 역할

 

- $sort, $limit, $skip

 

고급 스테이지

$bucket : 도큐먼트를 범위에 따라 그룹화한다.

$bucketAuto : 그룹의 개수에 따라 자동 그룹핑

$addFields : $project 스테이지에서 새로운 필드 추가

$facet : 각 필드에 대한 서브 파이프라인을 수행해서 배열로 저장

$lookup : MongoDB에서의 조인 연산

 

- $bucket 스테이지 

rating 필드를 기준으로, (2), (3,4) 구간으로 묶고 그 외의 도큐먼트들은 "Other"에 묶는다. 출력시 묶인 도큐먼트의 수와 user_id를 출력

 

- $bucketAuto 스테이지 : 출력으로 _id의 min값과 max값 그리고 count의 값을 자동으로 출력.

 

- $addFields 스테이지 

- $facet 스테이지 : 하나의 쿼리로 다양한 기준의 그룹핑을 수행할 때 사용. $facet 쿼리의 각 서브 파이프라인은 하나의 서브 스테이지를 반드시 가져야한다.

- $lookup 스테이지 

from : 조인할 도큐먼트 결정

localField : 넘겨받은 도큐먼트의 어떤 필드를 from에서 정한 도큐먼트의 필드와 매칭할지 결정

foreignField : from에서 선택한 도큐먼트에서 어떤 필드를 localField에서 정한 필드와 매칭할지 결정

as : from에서 정한 도큐먼트로부터 매칭되어 가져온 데이터를 여기서 정한 데이터 필드의 배열 안에 넣는다.

area_data 필드 추가

- $replaceRoot : $project 스테이지와 유사하게 도큐먼트의 모양을 바꾸는 스테이지

원래 컬렉션에서 두개의 필드를 추가

 

- $sample : 주어진 도큐먼트들을 랜덤하게 고르는 스테이지

 

- $sortByCount 스테이지 : 그룹화한 다음, 도큐먼트의 숫자를 세어 표시하고 내림차순으로 정렬

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

MongoDB의 트랜잭션  (0) 2022.11.14
집계 명령어(3)  (0) 2022.11.14
집계 명령어(1)  (0) 2022.11.01
쿼리 작성하기(2)  (0) 2022.10.31
쿼리 작성하기(1)  (0) 2022.10.31