2014-11-04 7 views
0

날짜 범위 (beginDate은 더 크거나 같아야 함 - closeDate은 현재 날짜보다 작거나 같아야 함)를 통해 특정 문서를 찾고 싶습니다. 문서는 다음과 같습니다MongoDB 날짜 범위로 문서 찾기 - JavaScript

{ "beginDate" : ISODate("2014-11-03T23:00:00Z"), 
    "closeDate" : ISODate("2014-11-10T23:00:00Z"), 
    "desc" : "Test", 
    "status" : "ok", 
    "playerId" : "ZLkQzaY7DDvwL8sRj", 
    "_id" : "kozi9eHcLYa2LbWDG" } 

내 쿼리는 다음과 같습니다

var doc = TestData.findOne({ 
    playerId: player._id, 
    beginDate: { $gte: new Date(new Date().toISOString()) }, 
    closeDate: { $lte: new Date(new Date().toISOString()) } 
}); 

불행하게도,이 작동하지 않습니다. 어떻게 해결할 수 있습니까? 도움을 주시면 대단히 감사하겠습니다.

+1

필터링하려는 날짜 개체가'ISODate' 인스턴스 여야합니까? – dm03514

+0

네, DB에'ISODate' 인스턴스로 저장되어 있습니다. 단지 "오늘"에 대한 문서를 가져오고 싶습니다. 범위 내에 있습니다. – user3475602

+0

이것이 작동하지 않는 이유를 정말로 이해하지 못합니다. – user3475602

답변

0

비교에서 논리를 거꾸로 잡았으므로 $lte$gte을 바꿔야합니다. beginDate의 값이 이고 현재 시간이 이하이고 closeDate의 값이 인 문서를 찾으려면 현재 시간이 이상이어야합니다. 현재 시간을 얻으려면 new Date()을 사용할 수도 있습니다.

var doc = TestData.findOne({ 
    playerId: player._id, 
    beginDate: { $lte: new Date() }, 
    closeDate: { $gte: new Date() } 
});