Professional Documents
Culture Documents
1 파이프라인, 단계 및 조정 가능 항목
다수 컬렉션에 있는 도큐먼트에 대한 분석을 수행한다. 유닉스 쉘의 파이프 개념을 기반. 몽고DB 컬렉션에서
입력을 받고, 컬렉션에서 나온 도큐먼트를 하나 이상의 단계를 거쳐 전달한다. 단계마다 해당 입력에 다른 작업을
수행한다. 각 단계는 전 단계의 출력을 입력으로 받아들인다. 모든 단계의 I/O는 도큐먼트다. Bash Shell의
파이프와 유사. 단계마다 특정 작업을 수행한다.
3 표현식
1. 불리언: AND, OR, NOT 등
2. 집합: 합집합, 교집합, 차집합 등
3. 비교: “$eq”/“$ne”/“$gt”/“$gte”/“$lt”/“$lte”
4. 산술: “$add”/“$subtract”/“$multiply”/“$divide”/“$mode”
5. 문자열: concat, substring 검색, 대소문자 등
(a) “$substr” : [expr, startOffset, numToReturn] 서브스트링
(b) “$concat” : [expr1[, expr2, ..., exprN]] 문자열 결합
(c) “$toLower” : expr 소문자로
(d) “$toUpper” : expr 대문자로
6. 배열: 필터링, 분할, 값의 범위 등
5 $unwind
flatmap 연산과 유사. 배열로 되어 있는 필드 값을 개개의 값으로 변환하여 전체를 배열화. 244페이지 첫 쿼리의
문제는 greylock이 한번이라도 펀딩 라운드에 참석한 회사의 모든 라운드를 가져온다. 그래서 같은 연산을 두 번
해주는 246페이지의 첫 번째 쿼리가 필요하다.
6 배열 표현식
3. as: (Optional) input 배열의 개개의 원소에 지정할 변수 이름 지정하지 않으면 this로 지정
4. limit: (Optional) 매칭할 원소의 개수를 지정
6.2 다른 연산
1. $arrayElemAt 배열의 인덱스를 지정해서 값을 가져온다. -1은 마지막 원소를 뜻한다.
2. $slice 배열의 subarray를 연산 [“$funding_rounds”, 1, 3] 은 인덱스 1부터 3개의 요소를 가져온다.
3. $size 배열의 크기
7 누산기
$sum, $avg, $first, $last, $max, $min, $push (중복 허용), $addToSet (중복 비허용)
8 그룹화 소개
SQL의 GROUP BY와 유사. 여러 도큐먼트의 값을 집계하고 작업. $group은 _id를 지정해야 한다.
1 {
2 $group :
3 {
4 _id: <expression >, // Group key
5 <field1 >: { <accumulator1 > : <expression1 > },
6 ...
7 }
8 }
여러 필드로 구성 된 것도 가능.
제약 조건 1. 마지막에만 사용 가능 2. 둘 중 하나만 사용 가능