2012-01-01 81 views
4

我正在使用MongoDB和C#4.0。在MongoDB中,我將CreatedOn作爲DateTime存儲,例如「2011-01-01T01:40:45.041Z」。在C#中,我使用的是MongoDB驅動程序,那麼如何查詢特定日期的數據庫呢?到目前爲止,我已經做了如下......如何查詢C#中的MongoDB日期時間?

var fileLogCollection = db.GetCollection<FileLog>(); 
Document selector = new Document(); 
selector["CreatedOn"] =dateTimePicker1.Value.Date; 
var all = fileLogCollection.Find(selector); 

感謝

+0

那麼,它不工作? – 2012-01-01 23:27:25

+0

你讀過[C#驅動教程](http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-FindandFindAsmethods)嗎? – 2012-01-01 23:30:05

+0

是不行的。我讀了它並沒有太大的幫助。我怎麼能把大於在選擇器抱歉它是一個愚蠢的問題,我是新來的。 – user1125435 2012-01-01 23:46:06

回答

8

喜歡它的使用官方的C#驅動程序示例代碼不看。

使用你會寫類似的官方C#驅動程序:

var collection = database.GetCollection<FileLog>("logs"); 
var query = Query.EQ("CreatedOn", dateTimePicker1.Value.Date.ToUniversalTime()); 
foreach (var document in collection.FindAll(query)) { 
    // process document 
} 

您還需要確保你存儲你的CreatedOn值作爲實際BSON DateTime值,而不是作爲字符串。

您還需要記住DateTime值以毫秒分辨率以UTC存儲。

4

我正在使用以下方法來查詢數據庫。你可以試試看。

var date = DateTime.Parse("2012-12-12");  
var docs = _docs.asQueryable().Where(o=>o.CreatedOn >= date && o.CreatedOn < date.AddDays(1));