Я использую драйвер 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)
Поэтому я думаю, что даты не должны быть просто преобразованы в соответствующую строку, но синтаксис поиска с использованием даты отличается.
Кто-нибудь со знанием джонго, кто может помочь?