从Grails gmongo中使用mongodb中的日期查询检索时出错

时间:2013-07-14 09:27:49

标签: java json mongodb groovy

我有一个字符串:

'"startDate" : {"\\$gte" : new Date() }'

我实际上想查询我的mongodb数据库集合中所有具有当前日期之后的日期的集合。这是一个示例文档:

{
  "_id" : ObjectId("51e2a857adc0c2fb535f6904"),
  "dateInfo" : {
    "dates" : {
      "startDate" : ISODate("2013-07-13T04:00:00Z"),
      "endDate" : ISODate("2013-07-19T20:00:00Z")
    },
    "named" : "name1",
    "fieldX" : "field1",
    "contact" : {
      "numbs" : ["+44 121 127 127", "+44 568 789 256", "+44 687 5788 9875"]
    }
  },
  "Locality" : "locality1",
  "type" : "ewhet"
}

来自mongo shell,我可以按如下方式查询:

db.collectionName.find({"dateInfo.dates.startDate" : {"$gte" : new Date()}})

现在我想从groovy那里做到。我试图这样做(使用mongoDB java api):

DBCursor cursor = db.collectionName.find(new JsonSlurper().parseText('{"startDate" : {"\$gte" : new Date() }}'))

上面的代码给出错误:

Lexing failed on line: 1, column: 48, while reading 'new ', was trying to match the constant 'null'

现在JsonSlurper的问题是它在键名和值名中都需要双引号。但是如果我在new Date()中加上双引号,它就不会被mongodb评估。

那么可以在这做什么?

1 个答案:

答案 0 :(得分:0)

你试过了吗?

db.collectionName.find( [ 'dateInfo.dates.startDate' : ['$gte' : new Date() ] ] )