2014-10-13 2 views
0

여러분, 타임 스탬프 저장에는 어떤 것을 사용해야합니까? 현재 MongoDB에 타임 스탬프를 저장하는 API 서비스가 있습니다. 이 타임 스탬프는 시간 범위에서 데이터베이스를 쿼리해야하기 때문에 중요합니다. 즉, 지난 1 시간 동안 또는 특정 날짜 사이에 저장된 모든 문서를 반환해야합니다.ios 및 mongodb, moment.js에 대한 타임 스탬프 선택

iOS 앱 날 ISO8601에 다음과 같은 타임 스탬프와 객체를 전송합니다

2014-10-09T18:00:48+01:00 

내가 바로 몽고에이를 저장하는 경우, 문서는 다음과 같습니다

{ 
    "_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3", 
    "timestamp" : "2014-10-09T18:00:48+01:00" 
} 

내가 쉽게이 몽고에 삽입 할 수있는, 하지만 내가해야 할 것 같아. object.timestamp = moment(object.created).toDate();

다음 중 어느 것이 산출 될 것인가 :

2014-10-09T18:00:48+01:00 

및 문서가 몽고에서 다음과 같이 보일 것이다 :

{ 
    "_id" : "2B6127C1-4E25-4271-B5A4-2CA9FEA4E1C3", 
    "timestamp" : ISODate("2014-10-09T13:00:48.000-04:00") 
} 

내가 유닉스 시대 형식으로 이러한 변환해야 하는가? 나는 ISO 타임 스탬프 형식의 차이점에 대해 정통하지는 않습니다. 첫 번째 예제에서 IOS는 ISO8601 형식 타임 스탬프를 보냅니다. 이 업계 표준입니까?

Best way to store date/time in mongodb을 비롯한 여러 스레드를 읽었으며 올바른 트랙에있는 것 같습니다. timestamp 기본 자바 스크립트 날짜 객체로 변환합니다.

사용자가 이러한 개체를 검색 할 때이 저장된 개체를 ISO8601 형식으로 변환해야합니까?

답변

1

가장 원시 형식으로 저장하면 더 많은 고유 기능을 사용할 수 있습니다. Mongo의 쿼리 또는 집계 API는 $gt 또는 $lte을 기본 날짜로 사용할 수 있습니다. 어떤 쿼리를 위해 정말 편리합니다. "날짜를 나타내는 문자열"로 이러한 유형의 작업을 수행하는 것이 훨씬 어렵습니다.

1970 년부터 밀리 초 단위로 저장하거나, 같은 방식으로 작동하지만, ISODate은 Mongo에서 인정하는 유형이므로 사용하십시오.

moment.js에 대한 멋진 선택. 재미있는 라이브러리이며, 데이터 저장 방법에 숨겨진 클라이언트에게 보여주기 위해 무엇을 선택 하든지 (원하는 방식 ...).

+0

완벽! 나가는 길에, 나는 타임 스탬프를 'iso8601'으로 변환 할 것이다. – Cmag

+0

Im은 로컬 타임 스탬프를 utc 타임 스탬프로 변환하는 끔찍한 시간을 갖는다. (어쩌면 도움을 줄 수있다!) http://stackoverflow.com/questions/26873200/momentjs-getting-javascript-date-in-utc – Cmag