【问题标题】:Query Date in Jongo在 Jongo 中查询日期
【发布时间】:2017-06-23 08:41:28
【问题描述】:

我想使用 Jongo 进行日期查询。用户应该能够在查询中输入字符串,所以我想使用带有字符串的 find 方法。我正在使用 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)

我做错了什么?

【问题讨论】:

    标签: mongodb groovy jongo


    【解决方案1】:

    是的,找到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' } } }")
    

    【讨论】:

    • 这行得通。您知道是否可以将 mongodb 中的字符串字段转换为日期?例如,生日是我收藏中的一个字符串,但我想把它当作一个日期
    • 是否可以使用这种语法进行日期计算?
    • @Peter 如果你有新问题,那么Ask a new Question。但这只是 JSON,所以真正的重点是您可以在正常代码中进行计算以及您想要的任何结构更改。然后,您只需使用这种“键”名称格式将其他对象序列化为 JSON。您不会在“字符串”中进行计算。就是这样。
    • 您不仅节省了我的时间,还节省了我的时间!!非常感谢
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多