Дата запроса в Джонго

Я хочу использовать Jongo для запросов даты. Пользователь должен иметь возможность ввести строку с запросом, поэтому я хочу использовать метод поиска со строкой. Я использую Groovy.

Мой код:

jongo.getCollection("mycollection").find("{birthday: {\$lt : ISODate(\"2012-11-23T00:13:00.000Z\")}}")

Я получаю это исключение:

java.lang.IllegalArgumentException: Cannot parse query: {birthday: {$lt : ISODate("2012-11-23T00:13:00.000Z")}}
Error |
at org.jongo.query.BsonQueryFactory.createQuery(BsonQueryFactory.java:162)
Error |
at org.jongo.Find.<init>(Find.java:47)
Error |
at org.jongo.MongoCollection.find(MongoCollection.java:84)
Error |
at org.jongo.MongoCollection.find(MongoCollection.java:80)

Что я делаю не так?


person Peter    schedule 23.06.2017    source источник


Ответы (1)


Да, нашел соответствующий строку в исходном коде для подтверждения

«ISODate» не имеет к этому никакого отношения, это имя функции JavaScript в оболочке mongo.

Джонго использует стандарт MongoDB Extended JSON для синтаксического анализа. Так что вы бы сделали

`{ \$date: \"2012-11-23T00:13:00.000Z\" }`

вместо.

На самом деле, используйте кавычки наоборот, чтобы сделать его чище:

.find("{ 'birthday': { '$lt': { '$date': '2012-11-23T00:13:00.000Z' } } }")
person Neil Lunn    schedule 23.06.2017
comment
Это работает. Знаете ли вы, можно ли преобразовать строковое поле в mongodb в дату? Например, день рождения — это строка в моей коллекции, но я хочу рассматривать ее как дату. - person Peter; 23.06.2017
comment
Можно ли выполнять вычисления даты с этим синтаксисом? - person Peter; 23.06.2017
comment
@Peter Если у вас есть новый вопрос, задайте новый вопрос. Но это всего лишь JSON, поэтому суть в том, что вы можете выполнять вычисления и любые структурные изменения в своем обычном коде. Затем вы просто сериализуете свои другие объекты в JSON с этим типом формата имени ключа. Вы не выполняете вычисления в строках. Вот и все, что есть на самом деле. - person Neil Lunn; 23.06.2017
comment
Вы спасли не только мой день, но и дни!! Благодаря тонну - person ersnh; 09.12.2019