2012-01-01 3 views
4

Я использую MongoDB и C# 4.0. В MongoDB я хранил CreateOn как DateTime, например «2011-01-01T01: 40: 45.041Z». В C# я использую MongoDB-драйверы, так как я могу запросить базу данных за определенный день? До сих пор я сделал, как ниже ...Как запросить время MongoDB в C#?

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

Благодарности

+0

Так, разве это не работает? –

+0

Вы читали [учебник по драйверу C#] (http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-FindandFindAsmethods)? –

+0

yup его не работает. и я прочитал его не очень. как я могу поставить больше, чем в селектор, извините, что это немой вопрос, который я новичок в этом. – user1125435

ответ

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 как значения DateTime реального BSON, а не как строки.

Вам также необходимо иметь в виду, что значения DateTime сохраняются в формате UTC с разрешением в миллисекундах.

4

Я использую следующий метод для запроса базы данных. Вы могли бы попробовать.

var date = DateTime.Parse("2012-12-12");  
var docs = _docs.asQueryable().Where(o=>o.CreatedOn >= date && o.CreatedOn < date.AddDays(1)); 
Смежные вопросы