如何在C#中查询MongoDB日期时间?

时间:2012-01-01 21:48:07

标签: c#-4.0 mongodb

我正在使用MongoDB和C#4.0。在MongoDB中,我将CreatedOn存储为DateTime,例如“2011-01-01T01:40:45.041Z”。在C#中我使用的是MongoDB驱动程序,那么如何查询特定日期的数据库呢?到目前为止,我已经完成了以下...

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

由于

2 个答案:

答案 0 :(得分: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中。

答案 1 :(得分:4)

我使用以下方法查询数据库。你可以尝试一下。

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