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.MinValue
而 find
没有吗?
您需要添加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") })
我正在使用 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.MinValue
而 find
没有吗?
您需要添加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") })