0

我有一个字符串:

'"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 不会对其进行评估。

那么这里可以做什么呢?

4

1 回答 1

0

你有没有尝试过:

db.collectionName.find( [ 'dateInfo.dates.startDate' : ['$gte' : new Date() ] ] )
于 2013-07-14T11:43:14.960 回答