我正在使用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 :(得分:1)
由于MongoDB shell是JavaScript shell,您需要使用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开始。
您也可以将字符串传递给其构造函数,但它似乎忽略了区域设置,因此您的日期需要格式化为US-style:
db.datetest.insert({"event": "Christmas Day 2010", "date": new Date('12/25/2010')});
请务必使用new Date()
而不只是Date()
,因为Date()
只返回一个字符串,您将无法将其作为日期查询。
MongoDB-CSharp驱动程序在将.NET DateTime对象序列化为BSON时会将其转换为MongoDB Date对象。