2012-06-07 36 views
1

我在裝飾我的表象= BsonType.Int64屬性類,我的DateTime屬性之一,所以它被保存在一個有日期的Int64表示的數據庫。表示= BsonType.Int64都不能正確使用日期時間

當我用來存儲屬性作爲一個普通的C#日期時間,並沒有將該值設置爲任何那就存儲DateTime.Min在數據庫中。這是完美的,因爲我是做從DATABSE閱讀和做Query.LT操作就像下面就可以了:

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

它用於返回所有值的罰款。

現在,我開始把它作爲BsonType.Int64和DateTime.Min的BsonType.Int64相當於是「0」。我的Query.LT(「MyField」,DateTime.Now));在與DateTime.Min一起存儲的所有日期上失敗。

如何解決這個任何想法?

回答

1

的問題是,在查詢過程中,MongoDB的司機不知道,你選擇的替代表示。

因此,你需要查詢一個Int64明確:

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

這將如預期(測試W/MongoDB的2.1.1,C#驅動1.4.2.4500)

+2

是。這是目前如何完成的。當您使用查詢構建器時,我們不知道您正在爲您放置該屬性的類構建查詢。在下一個版本中,我們將輸入可以解決這個問題的構建器。 –

+0

有趣。我想這在linq上下文中看起來很自然。鍵入的建設者會是什麼樣子?像'Query .LT(...)'? 。 – mnemosyn

+1

Query.Build (Q => q.LT(...)。然而,因爲這是更加自然簡單地使用LINQ,這是受支持,以及:Query.Where (T => t.DateTime <.. ); –