Mongoexport пытается экспортировать записи старше 120 дней, переменная оболочки не работает

Я сделал сценарий оболочки и пытаюсь экспортировать записи старше 1 дня из моей базы данных. В моей БД есть поле с именем problemDate, которое содержит даты в строковом формате в формате гггг-мм-дд, например (2021-03-22)

mongoexport --host localhost --db pagesuccess --collection problem -q='{ "problemDate": { "$lte" : "2021-03-22"}} ' --type=csv --out text2.csv --fields date,problemDetails,problem,tags,url,language,institution,section,theme
  connected to: mongodb://localhost/
  exported 8 records
--------------------------------------------------------------------------------------------------------------------
older1Day=$(gdate --date="1 days ago" +%F)
mongoexport --host localhost --db pagesuccess --collection problem -q='{ "problemDate": { "$lte" : "$older1Day"}} ' --type=csv --out text2.csv --fields date,problemDetails,problem,tags,url,language,institution,section,theme
  connected to: mongodb://localhost/
  exported 0 records

Я действительно не уверен, почему второй не работает, а первый работает. Единственная разница в том, что я использую переменную для даты во второй команде. Мне очень любопытно, почему второй не работает.


person AlwaysLearning2147    schedule 23.03.2021    source источник


Ответы (2)


Переменные не будут расширены без помещения их в двойные кавычки, а не в одинарные. Поэтому команду необходимо переписать как:

mongoexport --host localhost --db pagesuccess --collection problem -q="{ \"problemDate\": { \"$lte\" : \"$older1Day\"}}" --type=csv --out text2.csv --fields date,problemDetails,problem,tags,url,language,institution,section,theme
person Raman Sailopal    schedule 23.03.2021
comment
Это по-прежнему дает тот же результат, что и второй блок кода, экспортированный 0 записей. - person AlwaysLearning2147; 23.03.2021

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

Это сработало хорошо:

older120Days=$(gdate --date="1 days ago" +%F)
mongoexport --host localhost --db pagesuccess --collection problem -q='{ "problemDate": { "$lte" : "'"$older120Days"'"}} ' --type=csv --out text2.csv --fields date,problemDetails,problem,tags,url,language,institution,section,theme
person AlwaysLearning2147    schedule 23.03.2021