2016-06-27 43 views
2

我正在使用Mongo 2.2.3.3 C#驅動程序將一些日期字段作爲元數據寫入GridFS。案件角落是DateTime.MinValue。這被表示爲Date(-62135596800000),這表示自1970年1月1日(mongo doc),這將是C#語法new DateTime(1970,1,1).AddMilliseconds(-62135596800000)的毫秒數。迄今爲止都很好。Mongo'find'方法不適用於DateTime.MinValue

當查詢不同的日期值db.fs.files.distinct("metadata.lastWriteTimeUtc")時,我得到上面的值和ISODate("yyyy-MM-ddTHH:mm:ss.fffZ")格式的一系列ISODates。試圖查詢角落情況下...

檢查平等然而,當(以下無)不工作:

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

你需要添加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") })