【问题标题】:Cannot parse newDate() in Java无法在 Java 中解析 newDate()
【发布时间】:2019-08-08 08:56:34
【问题描述】:

我在 Mongo 查询中有这段代码:

db.getCollection('my_collection').aggregate([
   {
      '$match':{
         'current.date':{
            $gt:new Date(new Date(new Date().setDate(new Date().getDate())).setHours(00,00,00))
         }
      }
   }
])

我将查询读入字符串,当我尝试解析它时 JSONReader 返回此错误:

org.bson.json.JsonParseException: JSON reader expected an integer or a string but found 'new'.

有没有办法在严格模式下解析"new Date(new Date(new Date().setDate(new Date().getDate())).setHours(00,00,00))"

提前致谢!

问候。

【问题讨论】:

  • 除了您的查询需要是 json 并且因此 ' $gt' 的值需要是一个字符串之外,我会进一步假设 MongoDB 不能直接使用 Java 代码.此外,您想对所有这些新日期对象(我数 4)做什么?
  • 你好托马斯!谢谢你回复我。我试图获取日期大于我当前日期且小时数为 0 的日期。例如,对于今天,我需要知道日期大于 (08/08/2019:00,00,00) 的设备跨度>
  • 你想在JAVA中创建新的DATE并传入查询还是想在QUERY中创建新的DATE
  • 在 Java 中我做了这样的事情: Document myDocument = Document.parse(myRowQuery);其中 myRowQuery 是一个包含我所有 Mongo 查询的字符串
  • 如果 new Date(new Date(new Date().setDate(new Date().getDate())).setHours(00,00,00)) 应该是 Java,那么它有两个错误: (1) setDate() 返回 void,并且您不能将 void 传递给 new Date()。 (2) setHours() 接受 1 个参数,但您试图为其提供三个参数。

标签: java mongodb date mongodb-query aggregation-framework


【解决方案1】:

查询可以解析如下:

Document.parse("{ 'current.date':{ $gt: new Date().setHours(0,0,0,0) } }")

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2017-05-31
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多