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

时间:2016-06-27 12:06:41

标签: c# mongodb mongodb-.net-driver gridfs

我使用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.MinValuefind的原因没有?

1 个答案:

答案 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")  })