4

jongoドライバーを使用してmongoDBに接続します。

クエリの構文(たとえば、18歳未満の場合)は次のようになります。

collection.find("{age: {$lt : 18}}");

しかし、日付を照会する方法は?

mongoDBでは、日付とキーと値のペアは次のように格納されます。

{"date" : ISODate("2012-11-23T00:12:23.123Z")}

だから私は次のことを試しました:

collection.find("{date: {$lt : ISODate(\"2012-11-23T00:13:00.000Z\")}}");

しかし、Javaコードの実行中にこの例外が発生します:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.IllegalArgumentException: {dateLastSeen: {$lt: ISODate("2012-11-23T00:13:00.000Z")}} cannot be parsed
        at org.jongo.query.Query.convertToDBObject(Query.java:33)
        at org.jongo.query.Query.<init>(Query.java:26)
        at org.jongo.query.QueryFactory.createQuery(QueryFactory.java:38)
        at org.jongo.Find.<init>(Find.java:42)
        ... 10 more
Caused by: com.mongodb.util.JSONParseException:
{dateLastSeen: {$lt: ISODate("2012-11-23T00:13:00.000Z")}}
                     ^
        at com.mongodb.util.JSONParser.parse(JSON.java:198)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
        at com.mongodb.util.JSONParser.parse(JSON.java:195)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
        at com.mongodb.util.JSONParser.parse(JSON.java:195)
        at com.mongodb.util.JSONParser.parse(JSON.java:145)
        at com.mongodb.util.JSON.parse(JSON.java:81)
        at com.mongodb.util.JSON.parse(JSON.java:66)
        at org.jongo.query.Query.convertToDBObject(Query.java:31)

したがって、日付は対応する文字列にわかりやすく変換されるべきではないと思いますが、日付を使用して検索する構文は異なります。

ジョンゴの知識があり、助けてくれる人はいますか?

4

2 に答える 2

9

使用java.util.Dateは、Jongoで日付を照会するための標準的な方法です。

collection.find("{date: {$lt : #}}", new Date(2012, 11, 30));
于 2012-11-29T10:32:22.247 に答える
0

複数のパラメータを渡してクエリを実行するには-

jongoCollection.find("{date : { $gte : #, $lte : # }}", new Date(1234567890), new Date(1234567890))
于 2017-09-07T22:30:18.330 に答える