web-dev-qa-db-ja.com

JavaのMongoISODateクエリ

実行するmongoクエリがあります:

_query = { "dateField" : { "$gte" : ISODate('2011-11-10T07:45:32.962Z')  } }
_

Mongoシェルでdb.Collection.find(query)を実行すると、結果を取得できます。

Javaを使用してこれをクエリするにはどうすればよいですか?Dateパラメーターに基づいて文字列を作成しようとしましたが、文字列を作成する過程で、最終的には代わりに"ISODate('2011-11-10T07:45:32.962Z')"として渡されます。 ISODate('2011-11-10T07:45:32.962Z')の(周囲の引用符なし)。

Java APIを使用してこのクエリを作成するための最良の方法は何でしょうか?

ありがとう!

11
Skynet

通常のJava Date--また、QueryBuilderをお勧めします:

Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
21
Eve Freeman

私はたくさんの検索をしていて、mongoモデルにISODateがあるときにデータを取得する方法を見つけるのに1時間以上費やしています。

Dateのデフォルトのコンストラクターは非推奨であるため、私の場合は機能しませんでした。

BasicDBObject searchQuery = new BasicDBObject("_id" , 1);
try {
        searchQuery.append("timestamp",BasicDBObjectBuilder.start( "$gte",new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS\'Z\'").parse("2015-12-07T10:38:17.498Z")).get());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
6
Root