使用日期的Mongo Shell查询

时间:2019-02-01 22:40:59

标签: linux mongodb bash mongodb-query mongo-shell

我正在尝试从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()和其他东西,但似乎没有任何工作。

1 个答案:

答案 0 :(得分:2)

您必须将$DATE2放在单引号中,如下所示,以获得所需的结果,如下所示:

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

我尝试使用new ISODate,但也可以不使用它。有关日期使用的更多帮助,请单击here