1

我正在使用 Representation = BsonType.Int64 属性在我的类中装饰我的 DateTime 属性之一,以便它以日期的 Int64 表示形式存储在数据库中。

当我曾经将该属性存储为普通的 C# Datetime 并且没有将值设置为任何值时,它将 DateTime.Min 存储在数据库中。这是完美的,因为我正在从数据库中读取并执行 Query.LT 操作,如下所示:

Query.LT("MyField", DateTime.Now));

它曾经很好地返回所有值。

现在我开始将它存储为 BsonType.Int64 并且 BsonType.Int64 中的 DateTime.Min 的等价物是“0”。我的 Query.LT("MyField", DateTime.Now)); 在使用 DateTime.Min 存储的所有日期上都失败。

关于如何解决这个问题的任何想法?

4

1 回答 1

1

问题是,在查询期间,MongoDB 驱动程序不知道您选择了替代表示。

因此,您需要Int64明确查询:

Query.LT("MyField", DateTime.Now.Ticks));

这将按预期工作(使用 MongoDB 2.1.1 测试,C# 驱动程序 1.4.2.4500)

于 2012-06-07T11:39:30.443 回答