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 シェルから、次のようにクエリを実行できます。

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()です。

では、ここで何ができるでしょうか?

4

1 に答える 1

0

やってみました:

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