所以我有一个完整的数据库,其中包含begin_date
和end_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")}})