我使用Mongo 2.2.3.3 C#驱动程序将一些 date 字段作为元数据写入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")
格式的一系列ISOD。但是在尝试查询角落情况时......
检查是否相等(下面没有)不起作用:
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
的原因没有?
答案 0 :(得分:1)
您需要添加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") })