$date
はMongoDB拡張JSONの一部であり、これがmongoexport
でデフォルトとして取得されるものです。 クエリの一部として実際に使用できるとは思いません。
$date
で正確な検索を試みる場合 以下のように:
db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
エラーが発生します:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
これを試してください:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
または(@ user3805045によるコメントに続く):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
時間なしで日付を比較する必要がある場合もあります(@MattMolnarで示されます)。
mongo Shellのデータ型によると、両方とも同等である必要があります:
mongoシェルは、文字列またはDateオブジェクトとして日付を返すためのさまざまなメソッドを提供します。
- 現在の日付を文字列として返すDate()メソッド。
- ISODate()ラッパーを使用してDateオブジェクトを返す新しいDate()コンストラクター。
- ISODate()ラッパーを使用してDateオブジェクトを返すISODate()コンストラクター。
ISODate
を使用します それでもDateオブジェクトを返す必要があります。
{"$date": "ISO-8601 string"}
厳密なJSON表現が必要な場合に使用できます。考えられる例の1つは、Hadoopコネクタです。