2

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()
            }
        }
    }
}
);
4

1 に答える 1

1

MongoDBシェルはJavaScriptシェルであるため、JavaScriptDateオブジェクトを使用する必要があります。

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スタイルでフォーマットする必要があります。

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

文字列を返すだけで、日付としてクエリすることはできないため、単に、new Date()ではなく、必ず使用してください。Date()Date()

MongoDB-CSharpドライバーは、.NET DateTimeオブジェクトをBSONにシリアル化するときに、MongoDBDateオブジェクトに変換します。

于 2010-09-11T09:17:40.390 に答える