반응형

$dateToString 이란?

dateToString는 mongodb의 date object를 사용자가 지정한 포맷으로 변환시켜 주는 몽고디비 operator이다. aggregate 구문에서 $project와 함께 사용된다. 
 
 

dateToString 사용법

$project : {
      formattedDate : {$dateToString : { format : "xxxxxxx", date : "$value"}}
}
주로 위 포맷으로 aggregate project 구문 안에서 dateToString을 사용할 수 있으며, format 지정한 형식으로 date object인 $value 값을 사용자가 임의로 네이밍한 값인 formattedDate 값으로 뽑을 수 있다.
 
 
예를 들어, 아래의 도큐먼트 정보를 가질 때
{ "value" : ISODate("2014-01-07T08:15:39.736Z") } 

db.collection.aggregate([
     { $project: { formattedDate : { $dateToString: { format: "포맷", date: "$value" } } } }
   ])

를 실행할 때에 project 된 결괏값인 formattedDate
포맷%Y-%m-%d 라면  "2014-01-07" 이 되고
포맷%Y%m%d 라면 "20140107" 이고
포맷%m/%d/%Y 라면 "01/07/2014" 이 되는 것이다.
 
한마디로 date object의 정보에서 필요한 것만 뽑아서 원하는 형식으로 보여주는 것이 가능하다는 것이다.
 
 

포맷 지정자 classifier

Specifiers
Description
Possible Values
%d
Day of Month (2 digits, zero padded)
01-31
%G
Year in ISO 8601 format
0000-9999
%H
Hour (2 digits, zero padded, 24-hour clock)
00-23
%j
Day of year (3 digits, zero padded)
001-366
%L
Millisecond (3 digits, zero padded)
000-999
%m
Month (2 digits, zero padded)
01-12
%M
Minute (2 digits, zero padded)
00-59
%S
Second (2 digits, zero padded)
00-60
%w
Day of week (1-Sunday, 7-Saturday)
1-7
%u
Day of week number in ISO 8601 format (1-Monday, 7-Sunday)
1-7
%U
Week of year (2 digits, zero padded)
00-53
%V
Week of Year in ISO 8601 format
01-53
%Y
Year (4 digits, zero padded)
0000-9999
%z
The timezone offset from UTC.
+/-[hh][mm]
%Z
The minutes offset from UTC as a number. For example, if the timezone offset (+/-[hhmm]) was +0445, the minutes offset is +285.
+/-mmm
%%
Percent Character as a Literal
%

 
format, date 이외에도 timezone, onNull과 같은 옵션들도 있으니 추가 사항은 mongodb 공식 문서에서 확인할 수 있다.
 
 

예제

아래는 몽고디비 공식 도큐먼트에 나와있는 예제이다.
 

{
  "_id" : 1,
  "item" : "abc",
  "price" : 10,
  "quantity" : 2,
  "date" : ISODate("2014-01-01T08:15:39.736Z")
}

위와 같은 document를 가질 때
 

db.sales.aggregate(
   [
     {
       $project: {
          yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
          timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} },
          timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } },
          minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } },
          minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } }
       }
     }
   ]
)

위의 dateToString 포맷으로 project한 결괏값은 아래와 같다.

{
   "_id" : 1,
   "yearMonthDayUTC" : "2014-01-01",
   "timewithOffsetNY" : "03:15:39:736-0500",
   "timewithOffset430" : "12:45:39:736+0430",
   "minutesOffsetNY" : "-300",
   "minutesOffset430" : "270"
}

 
 
 
 
[참조]
https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/
 

반응형
반응형

미친 듯이 귀여운 폰트를 찾았다.

https://sunn.us/

SUNN 님께서 오픈소스로 공개해주신 SUITE체

엄청나게 깔끔하고 완전 내 취향저격이다.

 

 

지금 이 포스트는 다 SUNN님의 스위트 체로 보이도록 설정을 해놓았다. (아마 웹에서만 그렇게 보일지도)

정말로 너무나도 굉장히 이쁘다.

게다가 이런 이쁜 폰트를 오픈소스로 공개해주시다니

너무나도 멋진 포트폴리오를 가지고 계신 실제로도 멋진 분이실 것 같다.

 

 

폰트 적용 법

1. 사이트에 들어가 제일 아래 download 섹션에서 필요한 폰트 확장자 타입을 다운받는다.
https://sunn.us/suite/#keypoint
보통 윈도우라면 TTF, 맥이라면 OTF 를 설치한다.

2. 다운로드 된 파일 압축을 풀고 Windows라면 글꼴, MAC OS 라면 Fonts를 검색해서 drag & drop으로 쉽게 설치할 수 있다.

반응형
반응형

발생 오류

발생 이유 : verify 를 1번으로 선언했지만, 실제 코드에서 2번 불림

org.mockito.exceptions.verification.TooManyActualInvocations
whereIsNimoService.findNimo(
    <any>,
    <any>,
    <any>
);
Wanted 1 time:
-
But was 2 times:

 

오류 TC 코드

import static org.mockito.Mockito.verify;

@Mock
WhereIsNimoService whereIsNimoService;

@Test
public void test() {

	verify(whereIsNimoService).findNimo(any(), any(), any());
}

 

수정 TC 코드

Mockito.times 를 사용하여 whereIsNimoService에서 findNimo가 몇 번 불리는지 명시하여 verify 통과

import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.times;

@Mock
WhereIsNimoService whereIsNimoService;

@Test
public void test() {

	verify(whereIsNimoService, times(2)).findNimo(any(), any(), any());
}

 

 

 

🍓

반응형
반응형

변경사항을 다 밀어버리고 싶은 리모트 브랜치 : apron

내가 변경사항을 리모트로 보내려고 하는 로컬 브랜치 : apron-local-change

 

git push -f origin apron-local-change:apron

 

※ 주의 할 점

force update 하는 -f 옵션을 사용하므로 리모트 브랜치에 필요한 커밋들이 없는지 꼭 확인하자.

반응형
반응형

내가 하고 싶은 것.

모든 로컬 브랜치의 변경사항 버리고, 리모트 브랜치와 동일하게 가지고 싶음

현재 로컬 변경 사항들(커밋 및 파일 변경 사항들은)은 다 없어져도 됨.

 

 

브랜치명 : apron

 

git checkout apron

git fetch --all

git reset --hard origin/apron

반응형

+ Recent posts