сравнение дат для получения данных - PullRequest
3 голосов
/ 13 января 2012

У меня есть что-то вроде этого в mongodb

{ "_id" : ObjectId("4f0ee7310b09f7a254000001"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee7350b09f7a254000002"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee855e63cecb654000001"), "createdAt" : ISODate("2012-01-13T00:03:59Z") }
{ "_id" : ObjectId("4f0ee859e63cecb654000002"), "createdAt" : ISODate("2012-01-13T00:04:08Z") }
{ "_id" : ObjectId("4f0ee97c212d70bc54000001"), "createdAt" : ISODate("2012-01-13T00:08:54Z") }
{ "_id" : ObjectId("4f0ee99f212d70bc54000002"), "createdAt" : ISODate("2012-01-13T00:09:27Z") }

Я хочу показать только запись, основанную на дате.Проверьте мой код, он ничего мне не возвращает

//dateStr = '120112' or '120113'
var year = '20' + dateStr.substring(0,2);
var month =  dateStr.substring(2,4);
var day =  dateStr.substring(4);
dateStr = new Date(year,month,day,0,0,0);

var nextDate = new Date(year,month,day,23,59,59);

GPSData.find({"createdAt" : { $gte : dateStr, $lte:  nextDate }}, function(err, data) {
    if(err)
        console.log(err); 

    res.writeHead(200, {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": "*"
    });
    var body = JSON.stringify(data);
    res.end(body);  //no output here just []
});

, но на оболочке Монго с помощью этой команды я получаю результаты для даты '120112'

db.gpsdatas.find({"createdAt" : {new ISODate("2012-01-12T00:00:00Z"), $lte: new ISODate("2012-01-12T23:59:59Z") }});

Ответы [ 2 ]

1 голос
/ 13 января 2012

Ваша проблема - ваше понимание класса Date.Я предполагаю, что вы пытаетесь создать объект даты для 12 января, но новая Дата (2012, 1, 12) на самом деле 11 или 12 февраля, в зависимости от местного часового пояса.Таким образом, ваш код не выполняет запрос, который вы выполняете в оболочке.

Подробности читайте здесь http://www.w3schools.com/jsref/jsref_obj_date.asp

0 голосов
/ 13 января 2012

Слепой ответ, без какого-либо тестирования сам: что произойдет, если добавить эту строку перед строкой GPSData.find (..)?

dateStr = dateStr.toString();
nextDate = nextDate.toString();

Кроме того, попробуйте console.log, чтобы увидеть, как выглядит выходная строка. Он может быть в совершенно другом формате, чем вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...