当Isodate不是数字时,MongoDB会找到

时间:2017-08-07 10:11:32

标签: javascript mongodb datetime nan isodate

所以我有一个完整的数据库,其中包含begin_dateend_date类型为ISODate的记录。

自动脚本会解析文件并计算这些日期的值;但有时会出现问题,例如文件值不正确。

在这些情况下,我在数据库中获取此信息:ISODate("0NaN-NaN-NaNTNaN:NaN:NaNZ")

目前,我修复了文件解析器,在解析错误时将""放入数据库而不是错误的ISODate。

我的问题是:如何在数据库中找到ISODate值错误的所有文档;为了用""替换它们或将它们删除为更清洁。

我的目标是什么(使用未存在的运算符$isNan

db.collection.updateMany(
    {begin_date: {$isNan: true}}, 
    {$set: {begin_date: ""}}
);

我也尝试过这样的事情:

db.collection.find({begin_date:ISODate("0NaN-NaN-NaNTNaN:NaN:NaNZ")}})
2017-08-07T12:04:19.746+0200 E QUERY    [thread1] Error: invalid ISO date :
ISODate@src/mongo/shell/types.js:65:1
@(shell):1:38

现在,我用它来查找(但只有在我知道所有日期都在2000年之后才有效):

db.collection.find({begin_date:{$lt:ISODate("2000-01-01")}})

0 个答案:

没有答案