如何在(Jasper Studio)的 mongo DB 查询中制作动态/可选过滤器(参数)

Posted

技术标签:

【中文标题】如何在(Jasper Studio)的 mongo DB 查询中制作动态/可选过滤器(参数)【英文标题】:How to make a Dynamic/Optional Filter(parameters) in mongo DB query at (Jasper Studio) 【发布时间】:2019-01-11 14:43:34 【问题描述】:

我正在创建一个网络应用程序,它运行良好,但最终用户需要根据它的数据创建一个报告。

在报告页面上,我创建了一些文本框,用户将在其中键入以进行过滤。那些 txt 框可能是空的,我需要从数据库中返回所有内容,或者可以填充一些参数。请记住,我需要将 txt 框内容作为参数传递给 JasperServer,它们将在查询中使用。

数据输入的一个例子是:

    txtName= empty (null), 
    txtCity= 'Belo Horizonte'

它应该生成一份报告,其中包含人们在贝洛奥里藏特的所有生活记录,无论名称如何。

我用 SQL 完成了它,并且运行良好。在我尝试在 mongo 上使用相同的逻辑但它不起作用之后。我已经尝试过使用 $lt、$gt、$lte、$gte、$exist、$ne 和一堆其他聚合工具,但我无法正确使用它。

SQL:

select * from myfirstreports 
where ($Pcity is null or cidade =$Pcity) 
AND ($Pname is null or nome =$Pname)

蒙哥:


    'collectionName' : 'myfirstreports',

   'findFields' : 
    
        'nome': 1, 'numeros': 1, 'vulgo': 1, 'cidade': 1, 
        'usuResponsavelCadastro': 1, 'created_at': 1
    ,

    findQuery  : 
    
        $and: [ 
            $or:[ $Pcity: $eq: null, 'cidade': $Pcity], 
             $or:[$Pname: '$eq': null, 'nome': $Pname]
                    ]
     

【问题讨论】:

【参考方案1】:

我使用了以下表达式:

$Pcity.equals(null)? " " : "'cidade': '$P!city'"//Need to create a non prompting parameter
$Pname.equals(null)? " ":  "'nome': '$P!name'"

$P!... 参数允许我将查询创建为字符串并传递给 JasperSoft 报告。

【讨论】:

以上是关于如何在(Jasper Studio)的 mongo DB 查询中制作动态/可选过滤器(参数)的主要内容,如果未能解决你的问题,请参考以下文章

如何编译 jrxml 以获取 jasper?

如何获取 Grails 的 jasper 报告的数据源连接?

我应该把我的 .jasper 文件放在哪里以及如何访问它? [复制]

如何限制jasper报告不要在每个组的新页面上启动?

热门速递 | 腾讯恢复新用户注册,英伟达或无法收购ARM;Mongo DB 5.1Visual Studio 2022高能

如何将 Jasper Report 输出直接存储在数据库表中,中间没有任何步骤