Mongo shell 使用日期查询

Mongo shell query using date

我正在尝试 运行 来自 linux bash 的 Mongo shell 查询。问题是我无法检查 Mongo 中的日期是否大于存储在 bash 脚本变量中的 "date"。

这个运行没问题:

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 而不是固定日期的修改后的代码将不起作用,因为查询 return 是“0”,而它应该 return “1”。

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

我尝试使用 IsoDate() 和其他东西修改上面的代码,但似乎没有任何效果。

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

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

我试过 new ISODate 但没有它也能正常工作。有关日期用法的更多帮助,请单击 here