Монго метод 'find' не работает для DateTime.MinValue
Я записываю некоторые поля даты как метаданные в GridFS, используя драйвер C# Mongo 2.2.3.3. Угловой корпус DateTime.MinValue
, Это представляется в виде Date(-62135596800000)
, который представляет количество миллисекунд с 1 января 1970 года ( mongo doc), которое будет new DateTime(1970,1,1).AddMilliseconds(-62135596800000)
в синтаксисе C#. Пока все хорошо.
При запросе различных значений даты db.fs.files.distinct("metadata.lastWriteTimeUtc")
Я получаю значение выше и ряд ISODate в ISODate("yyyy-MM-ddTHH:mm:ss.fffZ")
формат. Однако при попытке запросить угловой случай...
Проверка на равенство (нет ниже) не работает:
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
не?
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") })