2010-09-09 3 views
2

Я использую драйвер MongoDB-Csharp, и мне было интересно, как правильно вставлять и запрашивать поле даты?Samus Mongodb-csharp Вставка дат и запросов по датам

Я попытался использовать даты, используя System.DateTime, но у меня возникают проблемы при попытке запроса по дате.

пример:

Вставка данных

var mongo = new Mongo(); 
var db = mongo.GetDatabase(dbName); 
var collection = db.GetCollection(collectionName); 

var document = new Document(); 
document["date"] = DateTime.Now.ToUniversalTime(); 
collection.Save(document); 

Запросы данных

var mongo = new Mongo(); 
var db = mongo.GetDatabase(dbName); 
var collection = db.GetCollection(collectionName); 
var results = collection.Find(
new Document() 
{ 
    { 
     "date", 
     new Document() 
     { 
      { 
       "$lte", DateTime.Now.ToUniversalTime() 
      } 
     } 
    } 
} 
); 
+0

Это выглядит хорошо. в чем именно проблема?: Вы не получили никаких результатов? –

+0

Спасибо, что посмотрели! Мой плохой, я на самом деле использовал оболочку для вставки данных. Когда я запускал код выше, он действительно работает. Итак, это может быть побочным вопросом, но как нужно сохранять даты в оболочке MongoDB? – Abe

ответ

1

Как MongoDB оболочки является JavaScript оболочки, вам нужно использовать the JavaScript Date object:

db.datetest.insert({"event": "New Year's Day 2011", "date": new Date(2011, 0, 1)}); 
db.datetest.insert({"event": "Now", "date": new Date()}); 

Обратите внимание, что если вы передаете год, месяц, дата конструктору месяцы начинаются с 0.

Вы также можете передать строку в конструктор, но это, кажется, игнорирует локаль так что ваша дата должна быть отформатированы в американском стиле:

db.datetest.insert({"event": "Christmas Day 2010", "date": new Date('12/25/2010')}); 

обязательно используйте new Date(), а не просто Date(), потому что Date() просто возвращает строку, и вы не сможете запросить его в качестве даты.

Драйвер MongoDB-CSharp преобразует объект .NET DateTime в объект DateTime MongoDB, когда он сериализует его в BSON.