복붙노트

[MONGODB] MongoDB의에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까?

MONGODB

MongoDB의에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까?

난 그냥 MongoDB에 대해 배울 시작하고 천천히 MySQL의 마이그레이션에 기대하고있다.

MySQL의에서, 두 개의 서로 다른 데이터 유형이 있습니다 - DATE ( '0000-00-00')와 DATETIME을 ( '0000-00-00 0시 0분 0초'). 내 MySQL의에서 필자는 DATE 타입을 사용하지만, 나는 확실하지 MongoDB를로를 전송하는 방법입니다. MongoDB의에서 DATETIME에 필적 날짜 객체가있다. 사용 Date 객체에 가장 적합한 것 같다,하지만 시간, 분, 초는 사용되지 않기 때문에, 공간을 낭비 할 것이다. 반면에, 문자열로 날짜를 저장하는 것은 잘못된 것 같다.

MongoDB의에서 저장 날짜 ( '0000-00-00')에 황금 표준이 있습니까?

해결법

  1. ==============================

    1.BSON (기본적 몽고 사용하는 저장 데이터 포맷)는 전용 일 유형 UTC 날짜 시간을 갖는 64 비트 (따라서, 8 바이트) 유닉스 시간 에포크 이후 밀리 초를 나타내는 정수 서명. 당신은 날짜와 타임 스탬프를 저장하기위한 다른 유형을 사용하는 이유 거의 유효한 이유가있다.

    BSON (기본적 몽고 사용하는 저장 데이터 포맷)는 전용 일 유형 UTC 날짜 시간을 갖는 64 비트 (따라서, 8 바이트) 유닉스 시간 에포크 이후 밀리 초를 나타내는 정수 서명. 당신은 날짜와 타임 스탬프를 저장하기위한 다른 유형을 사용하는 이유 거의 유효한 이유가있다.

    당신이 만약있는 거 당신은로 저장하여 3 바이트의 바이너리 BLOB으로 날짜를 저장할 수 있습니다 (이것은 매우 드문 경우에 문제에만 가치가 몽고의 패딩 및 최소 블록 크기와 모든 것을 다시) 일 당 몇 바이트를 저장 필사적 YYYYMMDD 형식의 부호없는 정수, 또는 단지 1백79년에 걸쳐 날짜 범위를 지원하기 때문에 X가 적절하게 선택해야한다 "년 X 월 1 일부터 일"을 나타내는 2 바이트의 바이너리 덩어리.

    편집 : 토론 아래이 매우 드문 상황에서만 가능한 방법입니다 보여줍니다한다. 원래; 몽고의 기본 날짜 형식을 사용합니다)

  2. ==============================

    2.나는 날짜가 올바른 날짜로 저장됩니다 MongoDB의 데이터베이스를 변환하는 과정에서 실제로 해요 () 대신 양식 YYYY-MM-DD에서 문자열로 저장하는 유형. 왜, 다른 모든 응답자가이 끔찍한 아이디어라고 말한다 고려? 간단하기 때문에 내가 고통 시간대의 더 (실제) 개념이없는 자바 스크립트에서 날짜와 작업하려고했던 네버 앤딩 고통을 넣어. 내 원하는 날짜와 자정 UTC로 설정 한 시간에, 즉 날짜 () 객체 MongoDB의에서 UTC 날짜를 저장했다,하지만 예기치 않게 복잡하고 오류가 발생하기 쉬운 올바르게 어떤 시간대에서 해당로 변환 사용자가 제출 한 날짜를 얻기 위해 그들이 나는 (그래, 내가 Sugar.js 및 Moment.js 알고 있어요) 작업에 코드 "UTC 로컬 어떤 시간대"내 자바 스크립트를 얻기 위해 애 쓰고 있었어요.에 될 일이와 나는 같은 단순한 문자열로 결정했습니다 좋은 오래된 MySQL의 표준 YYYY-MM-DD 길을 가야하는 것입니다, 나는 () 날짜로 구문 분석 클라이언트 측에서 런타임에 필요한 객체 것이다.

    나는 날짜가 올바른 날짜로 저장됩니다 MongoDB의 데이터베이스를 변환하는 과정에서 실제로 해요 () 대신 양식 YYYY-MM-DD에서 문자열로 저장하는 유형. 왜, 다른 모든 응답자가이 끔찍한 아이디어라고 말한다 고려? 간단하기 때문에 내가 고통 시간대의 더 (실제) 개념이없는 자바 스크립트에서 날짜와 작업하려고했던 네버 앤딩 고통을 넣어. 내 원하는 날짜와 자정 UTC로 설정 한 시간에, 즉 날짜 () 객체 MongoDB의에서 UTC 날짜를 저장했다,하지만 예기치 않게 복잡하고 오류가 발생하기 쉬운 올바르게 어떤 시간대에서 해당로 변환 사용자가 제출 한 날짜를 얻기 위해 그들이 나는 (그래, 내가 Sugar.js 및 Moment.js 알고 있어요) 작업에 코드 "UTC 로컬 어떤 시간대"내 자바 스크립트를 얻기 위해 애 쓰고 있었어요.에 될 일이와 나는 같은 단순한 문자열로 결정했습니다 좋은 오래된 MySQL의 표준 YYYY-MM-DD 길을 가야하는 것입니다, 나는 () 날짜로 구문 분석 클라이언트 측에서 런타임에 필요한 객체 것이다.

    덧붙여, 나는 또한 또한 시간대의 개념이없는 파일 메이커 데이터베이스,이 MongoDB의 데이터베이스를 동기화하기 위해 노력하고있어. 나를 위해 단순히 UTC 자정과 같은 그것의 의미는, I가 지금 다음 문자열 날짜에서 구문 분석 할 경우에도 덜 버그 코드를 확인하는 데 도움이, 특히, 시간 데이터를 저장하지 않는 단순.

  3. ==============================

    3.당신이 정말로 필드 당 4 바이트를 저장하는 신경 경우 양식 20110720 (저장은 어떤 경우에 더 클 수 있도록 노트 MySQL의 날짜가 3 바이트를 차지합니다)에서 INT32 필드와 날짜를 저장할 수 있습니다 (경우에 당신은 문서 당 많은 DATE 필드가). 그렇지 않으면 나는 표준 날짜 형식으로 더 나은 스틱을 것입니다.

    당신이 정말로 필드 당 4 바이트를 저장하는 신경 경우 양식 20110720 (저장은 어떤 경우에 더 클 수 있도록 노트 MySQL의 날짜가 3 바이트를 차지합니다)에서 INT32 필드와 날짜를 저장할 수 있습니다 (경우에 당신은 문서 당 많은 DATE 필드가). 그렇지 않으면 나는 표준 날짜 형식으로 더 나은 스틱을 것입니다.

  4. from https://stackoverflow.com/questions/6764821/what-is-the-best-way-to-store-dates-in-mongodb by cc-by-sa and MIT license