2013-06-19 2 views
2

필드를 제어 할 수 없어 API를 사용 중입니다. 필드 중 하나는 Date입니다.mongodb에서 날짜 형식을 변환하는 방법

지금, 나는 기록에 저장된 날짜가 다음 값을 유사 찾기 :

{ 
    ... 
    "foobarDate": "2013-05-26T05:00:00.000Z", 
    ... 
} 

지금이 날짜를 기준으로 일부 레코드를 검색하고자하는 - 예를 들어, 내가 그 모든 레코드를 검색해야 fooBarDate은 오늘 날짜보다 빠릅니다. 나는 자바 스크립트의 Date() 기능을 사용하는 경우

후 나는 다음과 같은 형식으로 날짜 수 :
Wed Jun 19 2013 21:13:50 GMT+0530 (IST)

나는 다음과 같이 내 쿼리를 디자인하려고하면 ...

{ 
    "fooBarDate": { 
     "$lte": <the date calculated in javascript> 
    } 
} 

을 ... 나는 레코드를 얻지 못한다. 나는 빈 배열을 얻는다. 나는 MongoDB에 저장된 Date의 형식이 내가 지나가는 것과 다르다는 데 의심 스럽다.

자바 형식의 날짜 형식을 mongodb 형식으로 변환하는 방법은 무엇입니까? 또는 적어도, MongoDB에 저장된 형식으로 현재 날짜를 얻으려면 어떻게해야합니까?

P. 나는 nodeJs를 사용 중이며이 경우 DB를 쿼리하려고합니다.

답변

5

몽고의 저장 ISODate 객체로 거슬러 올라간다. 그냥 ISODate 생성자에 우리의 날짜를 포장 :

{ 
    "fooBarDate": { 
     "$lte": ISODate("2013-05-26T05:00:00.000Z") 
    } 
} 
+0

이 약간 오해의 소지가'ISODate' 단순히 네이티브'Date' 형식으로 문자열을 변환하지만 같은 MongoDB를 저장하는 64 비트 정수 BSON 날짜로 날짜. – JohnnyHK

+0

fooBarDate를 Y-m-d 형식과 비교하려면 어떻게해야합니까? –

1

쿼리에 문자열을 전달하면 올바른 데이터 형식이 된 것처럼 보이는 ISO8601이지만 자바 스크립트 날짜 개체를 쿼리에 직접 전달하여 동일한 결과를 얻을 수도 있습니다. 쿼리가 실패 할 수있는 적절한 대괄호가 누락 된 것 같습니다. 이러한 방식으로 코드를 다시 포맷하십시오 (편집 내가 몽구스를 사용하고,하지만 난 바로 몽고가 같은 생각) :

var currentTime = new Date; 
orm.Records.find({lastUpdate:{$lte:currentTime}}) 
관련 문제