Монго запрос оболочки с использованием даты - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь запустить этот запрос оболочки Mongo из linux bash.Проблема в том, что я не могу проверить, больше ли дата в Mongo, чем «дата», сохраненная в переменной сценария bash.

Это работает нормально:

counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":ISODate("2019-02-01T00:00:00.000Z")}}).count()')

И "counter »var имеет ожидаемое значение.Но я не могу использовать фиксированное значение для даты.Итак, я создал переменную для хранения даты.

DATE2=$(date -d '1 minute ago' "+%Y-%m-%dT%H:%M:%S.%3NZ");

Эта переменная даты имеет ожидаемое значение.Я вижу, что при использовании простого printf.

Теперь модифицированный код, использующий DATE2 вместо даты исправления, не будет работать, потому что запрос возвращает «0», когда он должен возвращать «1».

counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":"$DATE"}}).count()')

Я пытался изменить код выше, используя IsoDate () и другие вещи, но, похоже, ничего не работает.

1 Ответ

0 голосов
/ 02 февраля 2019

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

 counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":new ISODate("'$DATE'")}}).count()')

Я пробовал с new ISODate, но будет работатьбез этого тоже.Для получения дополнительной помощи относительно даты использования нажмите здесь

...