Samus Mongodb-csharp Вставка дат и запрос по датам - PullRequest
2 голосов
/ 09 сентября 2010

Я использую драйвер 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()
            }
        }
    }
}
);

1 Ответ

1 голос
/ 11 сентября 2010

Поскольку оболочка MongoDB является оболочкой JavaScript, вам необходимо использовать объект JavaScript Date :

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() просто возвращает строку, и вы не сможете запросить ее как Date.

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

...