Сбой запроса диапазона дат для базы данных твитов MongoDB - PullRequest
3 голосов
/ 11 декабря 2011

Я пытаюсь выполнить запрос диапазона для коллекции твитов в базе данных Монго. По какой-то причине будет работать следующий запрос:

db.posts.find({'created_at': {$gte:"Fri Nov 25 00:00:00 +0000 2011", $lt:"Fri Nov 25 23:59:59 +0000 2011"}})

Но следующее не будет:

db.posts.find({'created_at': {$gte:"Thu Nov 24 00:00:00 +0000 2011", $lt:"Fri Nov 25 23:59:59 +0000 2011"}})

Я ввожу твит как объект JSON непосредственно в базу данных, так что это не должно быть проблемой, верно?

Ответы [ 2 ]

5 голосов
/ 11 декабря 2011

Вы должны убедиться, что вы используете реальные значения даты, а не строки. Например:

var from = ISODate("2011-11-24")
var to = ISODate("2011-11-25T23:59:59")
db.posts.find({ created_at : { $gte : from, $lt : to } })

Помимо проверки того, что ваши запросы используют реальные значения даты, убедитесь, что ваши сохраненные данные также содержат реальные значения даты.

1 голос
/ 11 декабря 2011

Проблема с вашим запросом в том, что вы сравниваете строку с объектом данных, который не работает.если вы используете оболочку, вы можете написать что-то вроде этого:

db.testing.find({
   'date': {
        $lt : new Date(2013,10,1),
        $gte : new Date(2000,10,1)
   }
})

, что в конечном итоге преобразует его в

db.testing.find({
   "date" : {
        "$lt" : ISODate("2013-11-01T00:00:00Z"),
        "$gte" : ISODate("2000-11-01T00:00:00Z")
   }
})

о запросах диапазона

о даты

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