Как мне вывести данные за определенную дату - PullRequest
5 голосов
/ 04 марта 2011

Я использую mongoexport для экспорта данных за указанные даты .. Моя команда это

mongoexport -d project -c coll  --csv -o result -f source -q '{"date":{"$gte":"new Date(2011,1,25)","lt":"new Date(2011,2,26)"}}'

, но это не экспорт результатов ... У меня есть данные, сохраненные за 25-фев-2011 и 26-фев-2011 в базе данных .. как я могу запросить даты?

Ответы [ 4 ]

5 голосов
/ 26 апреля 2011

У меня была такая же проблема .. Я исправил ее, используя время эпохи ..

Вы можете проверить здесь http://www.epochconverter.com/

Я использовал Java .. поэтому я использовал

Date x = new Date (year, month, day)

и получил эпоху с помощью x.getTime () и отправил ее в mongoexport

, так что оператор экспорта монго будет

mongoexport -d проект -c coll --csv -o результат -f source -q '{"date": {$ gte: (Date (1295913600)), $ lt: (Date (1298678400)}} '

2 голосов
/ 06 июля 2013

К сожалению, приведенный выше запрос Ваэля не сработал для меня с mongoexport версии 2.2.4, но вот этот:

$and:[{date:{$gte:new Date(1372801816000)}},{date:{$lt:new Date(1373061846000)}}]}

вам придется заменить два вышеуказанных числа эпох своими собственными.поэтому команда mongo export выглядит примерно так (я использовал --jsonArray вместо --csv)

mongoexport -h your_host:port -d your_db -c your_collection --jsonArray -o output.js -q '{$and:[{date:{$gte:new Date(time_stamp_1)}},{date:{$lt:new Date(time_stamp_2)}}]}'
2 голосов
/ 04 марта 2011

Я думаю, проблема в том, как вы указываете даты.

Во-первых, я не думаю, что new Date(....) должно быть в кавычках (будет рассматриваться как строковый литерал, а не как дата?).

Во-вторых, похоже, что новый Date(Y,M,D) не может быть использован здесь для указания даты - это дает мне следующую ошибку:

Утверждение: 10340: Ошибка разбора строки JSON рядом...

Я думаю, что вместо этого вам нужно указать дату численно.напримерnew Date(1234567890)

Так что все это будет примерно так:

mongoexport -d project -c coll  --csv -o result -f source -q '{"date":{"$gte":new Date(x)","$lt":new Date(y)}}'

где x = числовое представление вашей начальной даты, а y = конечная дата.Кроме того, добавлен отсутствующий «$» для «lt», как уже указывалось.

Обновление: Re: как найти числовое представление.Пришлось немного поиграть в оболочке монго, как относительно новичок в этом сам.Вот пример того, что я сделал оболочку Монго, чтобы получить номер (например, для 25-февр .:

> new Date(2009,1,25) * 1

, который дает:

1235520000000

Снова в оболочке, если вы затем выполните:

> new Date(1235520000000)

Это подтвердит, что это правильная дата:

ISODate("2009-02-25T00:00:00Z")
1 голос
/ 15 сентября 2011

Я только что натолкнулся на это, и, похоже, проблема в оригинальном посте в том, что new Date(2011,2,26) не должно быть заключено в кавычки, а "lt" должно быть "$lt".Кроме того, new Date(2011,2,26) - это 26 марта 2011 года, потому что в javascript для значений месяца используется диапазон 0-11.

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