我正在使用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);
由于
答案 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));