연산자 뒤 CP 가 붙어 있는 경우는 UTF-8에서 작동한다.
이름 | 설명 | 예시 |
---|---|---|
$concat | 두개 이상의 문자열을 하나로 연결 | { $concat : ["$ltem", "-", "$description"] } |
$strcasecmp | 두 개의 문자열의 대소를 비교하여 크면 1을 반환하고 작으면 -1, 같으면 0을 반환 | { $strcasecmp : [ "$quarter", "13q4" ] } |
$substr | ASCII 문자열의 일부분을 잘라서 반환 값에 문자열, 시작문자 위치, 문자길이 순으로 넣는다. | { $substr : [ "$quarter", 2, 1 ] } |
$substrCP | UTF-8 문자열의 일부분을 잘라서 반환한다. 값에 문자열, 시작문자 위치, 문자길이 순으로 넣는다. | { $substrCP : [ "$quarter", 2, 1 ] } |
$strLenCP | UTF-8 문자열의 길이를 반환 | { $strLenCP : "$name" } |
$toLower | 문자열의 모든 문자를 소문자로 변환 | { $toLower : "$item" } |
$toUpper | 문자열의 모든 문자를 대문자로 변환 | { $toUpper : "$item" } |
> db.area.aggregate([
... {
... $project :{
... area : {$concat : ['$city_or_province', '-', '$county']}
... }
... },
... {
... $project : {
... city_or_province :{ $substrCP: [ '$area', 0, 2 ]},
... county: { $substrCP: ['$area', 3, { $strLenCP: "$area"}]}
... }
... }
... ])
이름 | 설명 | 예시 |
---|---|---|
$add | 배열에 있는 숫자를 더한다. | { $add : [ "$price", "$hous", 1 ] } |
$divide | 첫 번째 숫자를 두번째 숫자로 나눈 몫 | { $divide : [ "$hours", 8 ] } |
$mod | 첫 번째 숫자를 두 번째 숫자로 나눈 나머지 | { $mod : [ "$hours", 8 ] } |
$multiply | 배열에 있는 숫자를 곱한다. | { $multiply : [ "$price", "$hours", 1 ] } |
$subtract | 첫 번째 숫자에서 두 번째 숫자를 뺀다. | $subtract : { "$hours", 8 ] } |
이름 | 설명 | 예시 |
---|---|---|
$toDate | 주어진 값을 Date 타입으로 변환 | { $toDate : "2022-10-01" } |
$dayOfYear | 올해 1월 1일부터 지금까지의 일수 ( 1 ~ 366 ) | { $dayOfYear : new Date( "2022-10-01" ) } |
$dayOfMonth | 이번달 1일부터 지금까지의 일수 ( 1 ~ 31 ) | { $dayOfMonth : new Date( "2022-10-01" ) } |
$dayOfWeek | 이번주 월요일부터 지금까지의 일수 | { $dayOfWeek : new Date( "2022-10-01" ) } |
$year | 날짜의 년도 | { $year : new Date( "2016-01-01T12:00:03Z" ) } |
$month | 날짜의 월 | { $month : new Date( "2016-01-01T12:00:02Z" ) } |
$week | 날짜의 연중 주( 0 ~ 53 ) | { $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" ) } |
> db.area.aggregate([
... {
... $project: {
... date: {$toDate: "$_id"}
... }
... },
... {
... $project: {
... createdAt: {
... year: {$year: "$date"},
... month: {$month: "$date"},
... day: {$dayOfMonth: "$date"},
... hour: {$hour: "$date"},
... minute: {$minute:"$date"},
... second: {$second: "$date"},
... }
... }
... }
... ])
이름 | 설명 | 예시 |
---|---|---|
$cond | if 자리에 조건을 쓰고, 참이면 then의 값을 반환, 거짓이면 else 의 값을 반환 | { $cond { if : { $gte : [ "$qty", 250 ] }, then : 30, else : 20 } } |
$ifNull | 첫 번째 요소 값이 존재하지 않으면, 두 번째 값을 반환 | { $ifNull { "$description", "Unspecified" ] } |
$and | 주어진 모든조건을 만족하면 참( true )값을 그렇지 않으면 거짓( false )값을 반환 | { $and : [ { $gt : [ "$qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] } |
$or | 주어진 조건 중 하나라도 만족하면 참( true )값을 반환 그렇지 않으면 거짓값( false )을 반환 | { $or : [ { $gt : [ "$qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] } |
$nor | 주어진 조건 중 하나라도 만족하지 않으면 참( true )값을, 그렇지 않으면 거짓( false )값을 반환 | { $nor : [ { $gt : [ "qty", 250 ] }, { $lt : [ "$qty", 200 ] } ] } |
$not | 배열 속 값이 참이면 거짓(false)을, 거짓이면 참( true )을 반환 | { $not : [ { $gt : [ "qty", 250 ] } ] } |
$arrayElemAt 연산자는 주어진 배열에서 정해진 순번의 요소 값을 반환하는데 여기서 순번은 0부터 시작한다.
이름 | 설명 | 예시 |
---|---|---|
$setEquals | 두 배열이 같은 요소를 가지면 참값을 반환하고 아니면 거짓을 반환 | { $setEquals : [ "$A", "$B" ] } |
$setSubset | 두 번째 배열이 첫 번째 배열의 부분 집합이면 참값을 반환하고, 아니면 거짓을 반환 | { $setSubset : [ "$A", "$B" ] } |
$setIntersection | 두 배열의 공통된 요소를 모아서 배열로 반환 | { $setIntersection : [ "$A", "$B" ] } |
$setDifference | 첫 번째 배열에는 있고, 두 번째 배열에 없는 요소를 모아서 배열로 반환 | { $setDifference : [ "$A", "$B" ] } |
$setUnion | 두 배열에 속한 모든 요소를 모아서 배열로 반환, 요소간 중복은 없다. | { $setUnion : [ "$A", "$B" ] } |
$arrayElemAt | 주어진 배열속의 정해진 순번의 요소를 반환 | { $arrayElemAt : [[ true, false, 1 ], 1] } |
노시퀄도 학습을 하고 계셨군요 좋습니다