1

クラス内のDateTimeプロパティの1つをRepresentation=BsonType.Int64属性で装飾して、日付のInt64表現でデータベースに格納されるようにします。

そのプロパティを通常のC#日時として保存し、値を何にも設定しなかった場合、データベースにDateTime.Minが保存されます。databseからの読み取りと、次のようなQuery.LT操作を行っていたので、これは完璧です。

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

そして、それはすべての値をうまく返すために使用されました。

これで、BsonType.Int64として保存を開始し、BsonType.Int64のDateTime.Minに相当するものは「0」です。my 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 に答える