Jongo中的查询日期

时间:2017-06-23 08:41:29

标签: mongodb groovy jongo

我想使用Jongo进行日期查询。用户应该能够使用查询输入字符串,因此我想将find方法与字符串一起使用。我正在使用常规。

我的代码:

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)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

是的,找到the relevant line in the source code to confirm

“ISODate”与此无关,它是mongo shell中的JavaScript函数名称。

Jongo使用MongoDB Extended JSON标准进行解析。所以你会这样做

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

代替。

真的,反过来使用引号使它更清洁:

.find("{ 'birthday': { '$lt': { '$date': '2012-11-23T00:13:00.000Z' } } }")