내 FindOne
문에 날짜 범위를 사용하여 MongoDb를 쿼리하려고하는데 작동하지 않습니다. Nodejs 기본 드라이버를 사용하고 있습니다. 다양한 옵션을 시도했지만 예상되는 레코드를 반환하는 것은 없습니다. 여기 FindOne (Nodejs 기본 드라이버를 통해)을 사용하여 기간별로 MongoDb 쿼리
- 예상대로 내가 RoboMongo이를 실행하는 경우, 그러나
console.log(sDate); // displays Fri Jun 20 2014 10:00:00 GMT+1000 (AUS Eastern Standard Time)
var sDateISO = sDate.toISOString();
console.log(sDateISO); // displays 2014-06-20T00:00:00.000Z
// all of these return null object
db.collection('events').findOne(
{ eventStartDate: { $lte: new Date(sDate)}},
function(err, obj) { console.dir(obj); } // displays null
);
db.collection('events').findOne(
{ eventStartDate: { $lte: (sDate) }},
function(err, obj) { console.dir(obj); } // displays null
);
db.collection('events').findOne(
{ eventStartDate: { $lte: new Date(sDateISO) }},
function(err, obj) { console.dir(obj); } // displays null
);
db.collection('events').findOne(
{ eventStartDate: { $lte: (sDateISO) }},
function(err, obj) { console.dir(obj); } // displays null
);
레코드가 반환된다 ===
UPDATE
,내 코드에서 다른 곳에서 문제가 발생했습니다 - FindOne
쿼리에 전달 된 별도의 매개 변수에서 형식 불일치 문제가 발생했습니다. documentation에 명시된, 아래 Christian P에 의해 확인 된
, 내가 직접 FindOne
쿼리에서 내 자바 스크립트 날짜 개체 sDate
를 사용할 수 있습니다.
이 실제로 Date 객체인지 확인하기 위해 typeOf
함수 (찾은 here)를 사용했습니다.
실제 코드에서 다른 모든 변수를 검사 한 후에 Date 개체/매개 변수와 관련이없는 다른 곳에서 문제가 발견되었습니다.