2015-02-26 6 views
0

Я пытаюсь взять mongodump из коллекций за последние 24 часа, используя bash, но получаю ошибки, так как я не могу использовать пользовательскую дату в параметре запроса оператора mongodump.mongodump с датой в параметре запроса с использованием сценария оболочки

timeInMs=$(expr "$(date +'%s%3N')" - 86400000) 

mongodump -u user -p password --authenticationDatabase admin --db dbname -c collection --query '{startTime:{$gte:new Date(${timeInMs})}}' 

timeInMs, как и ожидалось (время в мс 24 часов назад), но проблема заключается в получении запроса вправо. Большое количество хитов & пробный номер был использован, но успеха пока нет. Использовали следующие:

'{STARTTIME: {$ GTE: { "дата $": "$ {timeInMs}"}}}'

"{начальное время: {$ GTE: новые Дата \" ($ {timeInMs}) \ "}}"

'{начальное время: {$ GTE: новые Дата ("$ {timeInMs}")}}'

ответ

0

Вы должны получить ваши котировки правильно:

timeInMs=$(expr "$(date +'%s%3N')" - 86400000) 
mongodump -u user -p password --authenticationDatabase admin --db dbname -c collection --query '{startTime:{$gte:new Date('"$timeInMs"')}}' 

Для лучшей читаемости:

mongodump -u user \ 
-p password \ 
--authenticationDatabase admin \ 
--db dbname -c collection --query '{startTime:{$gte:new Date('"$timeInMs"')}}' 
+0

Новая дата принимает номер как параметр в случае ms, но эти кавычки приводят к преобразованию строк. – vashishatashu

+0

Я предположил, что у вас установлено timeInMs, если вы это сделаете, то дамп Mongod получит: 'mongodump -u user -p password --authenticationDatabase admin --db dbname -c collection --query {startTime: {$ gte: new Date (1424940476866)}} ' – Tiago

 Смежные вопросы

  • Нет связанных вопросов^_^