0

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、それも機能しないことに注意してください。

4

1 に答える 1