mongodb の eventSchedule コレクションからのサンプル JSON を次に示します。
/* 0 */
{
"_id" : ObjectId("51cd841b8b757a8c4c3b0af9"),
"type" : "evo",
"eventInfo" : {
"title" : "My title",
"field1" : "MyField1",
"schedule" : {
"fromDate" : ISODate("2013-07-19T04:00:00Z"),
"toDate" : ISODate("2013-07-25T20:00:00Z")
}
},
"locationName" : "Loc1"
}
このコレクションにクエリを実行し、スケジュール フィールドが「fromDate」で現在の日付より後のすべての eventSchedules を取得したいと考えています。
mongoVUE では、次のクエリが機能します。
db.eventSchedule.find({ "eventInfo.schedule.fromDate" : { "$gte" : ISODate("2012-04-29T00:00:00Z") } }).limit(50);
次のように、grailsコントローラーの1つから実行しようとしています:
def curDate= new Date()
def sdf= new SimpleDateFormat("yyyy-mm-dd")
def curFormattedDate= sdf.format(curDate)
def queryVal= "{\$gte : ISODate(\""+curFormattedDate+"T00:00:00.000Z\")}"
query.put("eventInfo.schedule.fromDate:", queryVal.trim())
DBObject a = db.eventSchedule.findOne(query)
println a
上記のコードは、a の値を null として返します。Pls は、から中かっこを削除するとqueryVal
、それも機能しないことに注意してください。