Mongo 'find' 方法不适用于 DateTime.MinValue

Mongo 'find' method does not work for DateTime.MinValue

我正在使用 Mongo 2.2.3.3 C# 驱动程序将一些 日期 字段作为元数据写入 GridFS。极端情况是 DateTime.MinValue。这表示为 Date(-62135596800000),表示自 1970 年 1 月 1 日以来的毫秒数 (mongo doc),在 C# 语法中为 new DateTime(1970,1,1).AddMilliseconds(-62135596800000)。到目前为止一切都很好。

当查询不同的日期值 db.fs.files.distinct("metadata.lastWriteTimeUtc") 时,我得到上面的值和一系列 ISODate("yyyy-MM-ddTHH:mm:ss.fffZ") 格式的 ISODates。但是,当尝试查询极端情况时...

检查是否相等(下面的none)不起作用:

db.fs.files.find({"metadata.lastWriteTimeUtc": Date(-62135596800000)})
db.fs.files.find({"metadata.lastWriteTimeUtc": Date("0001-01-01T00:00:00")  })
db.fs.files.find({"metadata.lastWriteTimeUtc": Date("0001-01-01T00:00:00")  })
db.fs.files.find({"metadata.lastWriteTimeUtc": ISODate("0001-01-01T00:00:00.000Z")  })
db.fs.files.find({"metadata.lastWriteTimeUtc": ISODate("0001-01-01T00:00:00Z")  })
db.fs.files.find({"metadata.lastWriteTimeUtc": ISODate("0001-01-01")  })

比较另一个值不适用于日期构造函数

db.fs.files.find({"metadata.lastWriteTimeUtc": {$lt: Date(0)}  })

但它与 ISODate 一样

db.fs.files.find({"metadata.lastWriteTimeUtc": {$lt: ISODate("1970-01-01T00:00:00.000Z")}  })

比较方法是一种解决方法,我不喜欢它。有人知道为什么 distinct 方法找到 DateTime.MinValuefind 没有吗?

您需要添加new

db.fs.files.find({"metadata.lastWriteTimeUtc": new Date(-62135596800000)})
db.fs.files.find({"metadata.lastWriteTimeUtc": new Date(0)})
db.fs.files.find({"metadata.lastWriteTimeUtc": new Date("0001-01-01T00:00:00")  })