Pentaho MongoDB报告查询日期范围

时间:2013-12-05 10:20:12

标签: mongodb pentaho

我正在尝试使用Pentaho Report Designer MongoDB本机连接器生成报告,但我无法使用日期范围。

我的收藏集中有一个名为“timestamp”的列,我尝试在查询标签中添加以下内容:

{"timestamp" : {$gte :ISODate("2013-12-04T15:10:00.000Z")}}
{"timestamp" : {$gte : new Date("2013-12-04T15:10:00.000Z")}}

虽然这些查询都在mongo shell上使用.find(查询)工作,但在Pentaho报表设计器中我没有得到任何行,也没有错误信息。

更简单的查询,例如:

{"objType" : "Image"}

在珠三角工作正常。

编辑:

由于以下建议,我设法让它发挥作用:

http://wiki.pentaho.com/display/EAI/MongoDB+Input

所以答案是使用类似的东西:

{ "$query" : { "timestamp" : { $gte : { $date : "2013-12-04T15:10:00Z" }, $lte : { $date : "2013-12-04T15:12:00Z" } } } }

仍然无法使用日期参数使其工作:如果我把:

{ "$query" : { "timestamp" : { $gte : { $date : "${StartDate}" }, $lte : { $date : "${EndDate}" } } } }

在查询选项卡中,我选择“StartDate”和“EndDate”为“Date”类型,它将无效。如果我将参数的类型设置为“String”并将其值设置为ISO格式,则它可以正常工作。

有没有办法直接使用Date类型参数?

1 个答案:

答案 0 :(得分:0)

来自https://help.pentaho.com/Documentation/8.2/Products/Data_Integration/Transformation_Step_Reference/MongoDB_Input

您可以使用类似next的内容:

{ created_at : { $gte : { $date : "2014-12-31T00:00:00.000Z" } } }

带有变量:

# my_date = '2014-12-31'
{ created_at : { $gte : { $date : "${my_date}T00:00:00.000Z" } } }

或者:

# my_date_time = '2014-12-31T00:00:00.000Z'
{ created_at : { $gte : { $date : "${my_date_time}" } } }