我正在尝试从linux bash运行此Mongo shell查询。问题是我无法检查Mongo中的日期是否大于bash脚本变量中存储的“日期”。
运行正常:
counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":ISODate("2019-02-01T00:00:00.000Z")}}).count()')
“计数器”变量具有预期值。但是我不能使用固定值作为日期。因此,我创建了一个变量来存储日期。
DATE2=$(date -d '1 minute ago' "+%Y-%m-%dT%H:%M:%S.%3NZ");
此日期var具有预期值。我可以使用简单的printf看到它。
现在,使用DATE2而不是修复日期的修改后的代码将不起作用,因为查询在应返回“ 1”时返回“ 0”。
counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":"$DATE"}}).count()')
我试图修改上面的代码,使用IsoDate()和其他东西,但似乎没有任何工作。
答案 0 :(得分:2)
您必须将$DATE2
放在单引号中,如下所示,以获得所需的结果,如下所示:
counter=$(mongo --quiet dbName --eval 'db.dbCollection.find({"updatedAt":{"$gt":new ISODate("'$DATE'")}}).count()')
我尝试使用new ISODate
,但也可以不使用它。有关日期使用的更多帮助,请单击here