1

Groovy を使用して、2 つの日付の間のすべてのドキュメントを取得しようとしています。私はいくつかのアプローチを試みましたが、うまくいきませんでした。最近、ここにリストされているアプローチを試しましたJava/MongoDB query by date

これが私のコードです:

BasicDBObject query = new BasicDBObject("lastDate", //
    new BasicDBObject("$gte",start).append("$lt", end));
    def temp=  getDB().sysLog.find(query)

ただし、エラーが発生します:

     No such property: gte for class: dev.ReportController Possible solutions: DB

このアプローチが機能しない理由がわかりません。groovy が "$gte" を Java とは異なる方法で処理しているように見えますが、これは理にかなっていますが、リクエストをどのようにフォーマットすればよいかわかりません。

4

1 に答える 1

4

一重引用符を使用する必要があります

new BasicDBObject( '$gte', start ).append( '$lt', end ) )

二重引用符を使用して、Groovy は を Groovy String に展開しようとしgteますが、それが示すように、という変数はありませんgte

実際、コードをよりグルーヴィーなものに変換できるはずです。

def temp = getDB().sysLog.find( [ lastDate:[ '$gte': start, '$lt': end ] ] as BasicDBObject )
于 2013-05-20T13:45:57.227 に答える