[MongoDB] 확장 검색 쿼리 - 집계 파이프 라인연산자 종류

 

파이프라인에서 사용할 수 있는 연산자를 종류별로 나눠서 구분해 보자.

 

 

STEP#01. 문자열 연산자

 

$concat 연산자

 

$concat 연산자는 두 개 이상의 문자열을 하나의 문자열로 연결한다.

예시> { $concat : { "$ltem", "-", "$description"] }

 

 

$indexOfBytes 연산자

 

$indexOfBytes 연산자는 바이트 수로 인덱스를 반환한다.

예시> { $indexOfBytes : [ "$Desk", "-"] }

 

 

 

$indexOfCP 연산자

 

$indexOfCP 연산자는 문자열에서 특정 문자가 처음 생겼을 때 인덱스 코드 포인트( CP )에서 찾아내면 

 

필드내의 문자열을 분석하는 데 도움이 된다.

예시> { $indexOfCP : [ "$Desk", "-" ] }

 

위 쿼리에서 처음 등장하는 하이픈 문자를 검색해보면

 

문자열 인코딩이 다르면 사용하는 연산자가 달라지는데, 뒤에 CP를 붙인 것은 UTF-8 문자열에서 작동한다.

 

 

$split 연산자

 

문자열로 특정 인덱스를 찾는 것은 지정된 연산자에 유용하지만,

 

구분 기호를 기준으로 문자열을 배열 분할하는 것도 도움이 될 수 있다.

 

쿼리를 복잡하게 작성해 각 구분 기호를 찾을 수도 있다.

 

문자열로 특정 인덱스를 찾는 데 단일 명령으로 $split을 사용할 수 있다.

 

아래 쿼리에서 필드의 위치의 각 구성요소를 배열로 구분한다.

 

예시> { $split: [ "$Desk", "-" ] }

 

 

$strLenBytes 연산자

 

$strLenBytes 연산자를 사용해 문자열 길이를 바이트 단위로 알아낼 수 있다.

 

예시> { $strLenBytes : "$Desk" }

 

 

 

$strLenCP 연산자

 

UTF-8 문자열의 길이를 반환한다.

 

예시> { $strLenCP : "$name" }

 

 

 

$strcasecmp 연산자

 

$strcasecmp 연산자는 두 개의 문자열의 대소를 비교하여 크면 1을 반환하고 작으면 -1, 같으면 0을 반환한다.

 

예시> { $strcasecmp : [ "$quarter", "13q4" ] }

 

 

 

$substr 연산자

 

$substr 연산자는 ASCII 문자열의 일부분을 잘라서 반환한다.

 

값에 문자열, 시작문자 위치, 문자길이 순으로 넣는다.

 

예시> { $substr : [ "$quarter", 2, 1 ] }

 

 

 

 

$substrBytes 연산자

예시> { $substrBytes : [ "$snum", "$$z", 1 ] }

 

 

 

$substrCP 연산자

 

UTF-8 문자열의 일부분을 잘라서 반환한다.

 

값에 문자열, 시작문자 위치, 문자길이 순으로 넣는다.

예시> { $substrCP : [ "$quarter", 2, 1 ] }

 

 

 

$toLower 연산자

 

문자열의 모든 문자를 소문자로 만든다.

 

예시> { $toLower : "$item" }

 

 

$toUpper 연산자

 

문자열의 모든 문자를 대문자로 만든다.

 

예시> { $toUpper : "$item" }

 

 


 

STEP#02. 산술 연산자

 

$abs 연산자

 

$add 연산자

 

필드( 배열 )에 있는 숫자를 더한다.

 

예시> { $add : [ "$price", "$hous", 1 ] }

 

 

$ceil 연산자

 

$divide 연산자

 

첫 번째 숫자를 두번째 숫자로 나눈 몫

 

예시> { $divide : [ "$hours", 8 ] }

 

 

 

$exp 연산자

 

$floor 연산자

 

$in 연산자

 

$log 연산자

 

$log10 연산자

 

$mod 연산자

 

첫 번째 숫자를 두 번째 숫자로 나눈 나머지

 

예시> { $mod : [ "$hours", 8 ] }

 

 

$multiply 연산자

 

배열에 있는 숫자를 곱한다.

 

예시> { $multiply : [ "$price", "$hours", 1 ] }

 

 

$pow 연산자

 

$sqrt 연산자

 

$subtract 연산자

 

첫 번째 숫자에서 두 번째 숫자를 뺀다.

 

예시> $subtract : { "$hours", 8 ] }

 

 

$truc 연산자

 


 

STEP#03. 날짜연산

 

$toDate 연산자

 

주어진 값을 Date 타입으로 변환한다.

 

예시> { $toDate : "2020-10-02" }

 

 

$dayOfYear 연산자

 

올해 1월 1일부터 지금까지의 일수( 1 ~ 366 )

 

예시> { $dayOfYear : new Date( "2016-01-01" ) }

 

 

$dayOfMonth 연산자

 

이번달 1일부터 지금까지의 일수( 1 ~ 31 )

 

예시> { $dayOfMonth : new Date( "2016-01-01" ) }

 

 

 

$dayOfWeek 연산자

 

이번주 월요일부터 지금까지의 일수

일요일

월요일

화요일

수요일

목요일

금요일

토요일

1

2

3

4

5

6

7

 

예시> { $dayOfWeek : new Date( "2016-01-01" ) }

 

 

 

$year 연산자

 

날짜의 년도

 

예시> { $year : new Date( "2016-01-01T12:00:03Z" ) }

 

 

$month 연산자

 

날짜의 월

 

예시> { $month : new Date( "2016-01-01T12:00:02Z" ) }

 

 

$week 연산자

 

날짜의 연중 주( 0 ~ 53 )

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

예시> { $month : new Date( "2016-01-01T12:00:01Z" ) }

 

$hour 연산자

 

날짜의 시간( 0 ~ 23 )

 

예시> { $month : new Date( "2016-01-01T12:00:00Z" ) }

 

 

$minute 연산자

 

날짜의 분( 0 ~ 59 )

 

예시> { $month : new Date( "2016-01-01T12:00:01Z" ) }

 

 

$second 연산자

 

날짜의 초( 0 ~ 59 )

 

예시> { $second : new Date( "2016-01-01T12:00:02Z" ) }

 

 

$millisecond 연산자

 

날짜의 밀리초( 0 ~ 999 )

 

예시> { $millisecond : new Date( "2016-01-01T12:00:03Z" ) }

 

 

$dateToString

$isoDayOfWeek
$isoWeek

$isoWeekYear

 


 

STEP#04. 논리( 조건 ) 연산

 

$cond 연산자

 

if 자리에 조건을 쓰고, 참이면 then의 값을 반환, 거짓이면 else 의 값을 반환

 

예시> { $cond { if : { $gte : [ "$qty", 250 ] }, then : 30, else : 20 } }

 

 

 

$ifNull 연산자

 

첫 번째 요소 값이 존재하지 않으면, 두 번째 값을 반환한다.

 

예시> { $ifNull { "$description", "Unspecified" ] }

 

 

$switch 연산자

 


 

STEP#05. 불리언 연산

 

$and 연산자

 

주어진 모든조건을 만족하면 참( true )값을 그렇지 않으면 거짓( false )값을 반환한다.

예시> { $and : [ { $gt : [ "$qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] }

 

 

 

$or 연산자

 

주어진 조건 중 하나라도 만족하면 참( true )값을 반환한다. 그렇지 않으면 거짓값( false )을 반환다.

 

예시> { $or : [ { $gt : [ "$qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] }

 

 

 

$not 연산자

 

배열 속 값이 참이면 거짓( false )을, 거짓이면 참( true )을 반환한다.

 

예시> { $not : [ { $gt : [ "qty", 250 ] } ] }

 

 

 

$nor 연산자

 

주어진 조건 중 하나라도 만족하지 않으면 참( true )값을, 그렇지 않으면 거짓( false )값을 반환한다.

예시> { $nor : [ { $gt : [ "qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] }

 

 


 

STEP#06. 비교연산

 

$cmp 연산자

 

$cmp( compare ) 연산자는 두 값을 비교하여 첫 번째 값이 크면 1, 두번째 값이 크면 -1, 같으면 0을 반환한다.

예시> { $cmp : [ "$qty", 250 ] }

 

 

$eq 연산자

 

$eq( equals ) 연산자는 주어진 두 값이 서로 일치하면 참값을, 아니면 거짓값을 반환한다.

 

예시> { $eq : [ "$qty", 250 ] }

 

 

 

$gt 연산자

 

$gt( greater than ) 연산자는 첫번째 값이 두 번째 값보다 크면 참, 아니면 거짓을 반환한다.

 

예시> { $gt : [ "$qty", 250 ] }

 

 

$gte 연산자

 

$gte( greather than or equals ) 연산자는 첫 번째 값이 두 번째 값보다 크거나 같으면 참, 아니면 거짓을 반환한다.

예시> { $gte : [ "$qty", 250 ] }

 

$lt 연산자

 

$lt( less than ) 연산자는  첫번째 값이 두 번째 값보다 작으면 참, 아니면 거짓을 반환한다.

 

예시> { $lt : [ "$qty", 250 ] }

 

 

 

$lte 연산자

 

$lte( less than or equals ) 연산자는 첫 번째 값이 두 번째 값보다 작거나 같으면 참, 아니면 거짓을 반환한다.

예시> { $lte : [ "$qty", 250 ] }

 

$ne 연산자

 

$ne( not equal ) 연산자는 주어진 두 값이 서로 일치하지 않으면 참, 일치하면 거짓 값을 반환한다.

예시> { $ne : [ "$qty", 250 ] }

 

 

$in 연산자

 

$in 연산자는 두 번째 값 안에 첫 번째 값이 속하면 true값을, 아니면 false를 반환하다.

 

예시> { $in : [ "bannanas" : "$in_stock"] } 

 

 

$nin 연산자

 

$nin( not in ) 연산자는 두 번째 값 안에 첫 번째 값이 속하면 false를, 아니면 true을 반환한다.

 

예시> { $nin : [ "bannanas" : "$in_stock"] } 

 

 

 

파이프라인 비교 연산자는 논리, 비교 연산자와 유사한 형식을 갖고 있지만,

 

비교하는 값이 배열 속에 있다는 점이 이전의 쿼리 비교 연산자와 다르다.

 

집계 파이프라인 비교 연산자 형식은 배열의 첫 번째 값을 두 번째 값과 비교하는 형식으로 되어있다.

 

 


 

STEP#07. 배열 연산자

 

$arrayElemAt 연산자

 

주어진 배열속의 정해진 순번의 요소를 반환한다.

예시> { $arrayElemAt : [ [ treu, false, 1 ], 1 ] }

 

$concatArrays 연산자

$filter 연산자

$indexOfArray 연산자

$isArray 연산자

$range 연산자

$reverseArray 연산자

$reduce 연산자

$size 연산자

$slice 연산자

$zip 연산자

$in 연산자

 

 


 

STEP#08. 집합 연산

 

$setEquals 연산자

 

두 배열이 같은 요소를 가지면 참값을 반환하고 아니면 거짓을 반환한다.

 

예시> { $setEquals : [ "$A", "$B" ] }

 

 

 

$setIntersection 연산자

 

두 배열의 공통된 요소를 모아서 배열로 반환한다.

 

예시> { $setIntersection : [ "$A", "$B" ] }

 

 

 

$setUnion 연산자

 

두 배열에 속한 모든 요소를 모아서 배열로 반환,  요소간 중복은 없다.

 

예시> { $setUnion : [ "$A", "$B" ] }

 

 

 

$setDifference 연산자

 

첫 번째 배열에는 있고, 두 번째 배열에 없는 요소를 모아서 배열로 반환한다.

 

예시> { $setDifference : [ "$A", "$B" ] }

 

$setSubset 연산자

 

두 번째 배열이 첫 번째 배열의 부분 집합이면 참값을 반환하고, 아니면 거짓을 반환한다.

 

예시> { $setSubset : [ "$A", "$B" ] }

 

 

 

$anyElementTrue 연산자

$allElementsTrue 연산자

 

 


 

STEP#09. 그룹 연산

 

$sum 연산자

$avg 연산자

$first 연산자

$last 연산자

$max 연산자

$min 연산자

$push 연산자

$addToSet 연산자

$stdDevPop 연산자

$stdDevSamp 연산자

 

 

나열된 연산자는 MongoDB 3.4에서 지원되고 있는 것이며,

 

일부 연산자는 MonogDB 3.2 이하 버전에서는 지원되지 않을 수도 있다.

 

그리고 더 중요한 점은 묻는 스테이지에서 여기 나열된 연산자를 모두 사용할 수 있는 것이 아니라는 점이다.

 

즉 스테이지에 맞게 그 스테이지에서 사용할 수 있는 연산자를 취사선택해서 사용해야 한다.

 

 

 

참고 : https://cloud.hosting.kr/techblog_190416_amazon-documentdb/

 

[출처] https://secretartbook.tistory.com/34

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 86034
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 78561
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 95291
14 [SQLite]10만 TPS와 10억 행 처리: SQLite의 놀라운 효율성 졸리운_곰 2025.12.05 1184
13 [sqlite] SQlite source code analysis-architecture file 졸리운_곰 2021.04.12 1806
12 [SQLite] SQLite 사용자 함수 추가 졸리운_곰 2021.04.12 1662
11 {SQLite] SQLite 페이지 핸들링(3) - 레코드 포맷 졸리운_곰 2021.04.12 1665
10 [SQLite] SQLite 페이지 핸들링(2) - SQLite의 페이지 포맷 file 졸리운_곰 2021.04.12 1495
9 [SQLite] SQLite 페이지 핸들링(1) - SQLite의 구조 file 졸리운_곰 2021.04.12 1486
8 [C/C++ 자료구조] SQLite 의 모든 것 (4부) - Java 에서 사용하기 Database/SQLite file 졸리운_곰 2021.04.12 1662
7 [C/C++] SQLite 의 모든 것 (3부) - C++ 에서 사용하기 Database/SQLite 졸리운_곰 2021.04.12 1719
6 [C/C++ 자료구조] SQLite 의 모든 것 (2부) - Download & Build Database/SQLite file 졸리운_곰 2021.04.12 1665
5 [C/C++ 자료구조] SQLite 의 모든 것 (1부) - 소개 및 FAQ Database/SQLite file 졸리운_곰 2021.04.12 1330
4 SQLite-sync.com version 3 file 졸리운_곰 2017.07.03 2017
3 DB Browser for SQLite file 졸리운_곰 2017.04.26 1651
2 Getting started with SQLite in C# file 졸리운_곰 2017.04.24 1828
1 SQLite C/C++ Tutorial 졸리운_곰 2017.04.24 1496
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED