润乾报表如何从 mongodb 中取数
MongoDB 属于 NoSql 中的基于分布式文件存储的文档型数据库,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,但是由于其属于 nosql 型,所以很难想普通数据库那样通过 jdbc 连接,通过 sql 取数,下面介绍下,如何在润乾报表中连接 mongodb 并从中取数。
针对于一些特殊数据库(不能用 jdbc 或者 odbc 连接),润乾开发了外部库功能,对一些特殊数据库功能进行了封装,直接使用封装后的函数就可以实现特殊数据库的连接、读取、计算等功能,要想使用外部库功能,需要集算器或者脚本数据集的支持。
集算器中连接方法:
集算器中设置外部库可以参考文档(如不需要集算器直接使用报表,此处可略过):
具体使用见文档中即可,比如现在 mongodb 中有张数据表(集合)student,里边数据为:

在集算器中写脚本:

A1:=mongo_open(“mongodb://127.0.0.1:27017/test”) 连接 test 数据库,用户名和密码为空
A2:=mongo_shell(A1,“student.find()”).fetch() 从 student 中取数,也可以实现 count、distinct 和 aggregate 操作
这样,A2 单元格就能够从 student 表中取出数据。
将这个脚本保存成 dfx 文件,在报表中可以增加一个集算器数据集,用这个 dfx 文件做为数据集就行。
润乾报表连接方法:
在一些项目中,需求比较简单,可能并不需要集算器,那么可以使用润乾报表的脚本数据集,下面介绍下,在润乾报表中如何通过脚本数据集连接 mongodb 数据库。
1、下载需要的外部库包,下载地址为:(http://c.raqsoft.com.cn/article/1532597958129)
并解压,比如放到:G:\extlib,下边子目录为各个不同的数据库目录,然后下载 mongo-java-driver-3.6.3.jar,具体版本号可以根据数据库版本来确定,下载后放到 G:\extlib\MongodbCli 中,在这个目录中有个 mongoCli.jar,这个是润乾针对 mongodb 开发的外部库的 jar 包。
2、启动报表设计器,在工具栏中选择 工具——选项,找到集算器选项标签,在外部库目中选择步骤 1 中的 G:\extlib,并且勾中 MongodbCli,如图:

如果还需要其他外部库,在这里选中就行,点击确定,然后重启设计器
3、新建报表,新建数据集时选择脚本数据集,在脚本数据集中写入:

A1:=mongo_open(“mongodb://127.0.0.1:27017/test”) 连接 test 数据库,用户名和密码为空
A2:=mongo_shell(A1,“student.find()”).fetch() 从 student 中取数,也可以实现 count、distinct 和 aggregate 操作
点击确定,这样就可以基于这个脚本数据集设计报表,设计模板如下:

预览结果:

参数过滤
实际应用中,通常要传入参数对数据进行过滤,下面已年龄为例,看下如果通过参数对数据进行过滤。
在报表中增加参数:age,数据类型为整数:

现在要查询 student 表中年龄大于传入参数的数据,那么更改脚本数据集的 A2 单元格为:
=mongo_shell(A1,“student.find({\“age\”:{$gt:”+string(age)+“}})”).fetch()
这里用的是大于,等于有其他写法,具体可以百度下。
这样的话,设计器下报表就能够通过脚本数据集从 mongodb 数据库中取数,并且能够对数据进行过滤。
现在的外部库配置,是通过 工具——选项,外部库的设置中配置的,如果报表需要部署到 web 服务器上发布,那么还需要在润乾的配置文件中设置外部库的配置:
打开 WEB-INF 下的 raqsoftConfig.xml, 找到…… 节点,在这个节点内增加:
<extLibsPath>G:\\extlib</extLibsPath> <importLibs> <lib>MongodbCli</lib> </importLibs>
<extLibsPath>G:\\extlib</extLibsPath> <importLibs> <lib>MongodbCli</lib> </importLibs>
注:extLibsPath 标签设置外部库的根目录
importLibs 设置外部库中对应数据库的 jar 存放目录。
常见问题:
设置完脚本数据集,预览报表时,通常会报错:无法识别的表达式 mongo_open()
解决办法:
1、查看外部库设置是否正常
2、现在 mongodb 通常为 64 位,并且润乾的 mongoCli.jar 也是基于高版本的 jdk 编译,所以检查报表安装时的 jdk 版本,设计器自带的是 1.6,建议安装时选择本机高版本的 jdk
这样,润乾报表就可以连接 mongodb 数据库,并且从中取数数据进行展示。当然,集算器脚本中还提供了 mongodb 的更多计算方法

润乾报表如何从 mongodb 中取数的更多相关文章
- 润乾报表JSF FORM 标签中使用填报表解决方案
需求 润乾报表的标签需要在jsf页面中和其他填报控件一起使用,润乾报表负责展现录入部分数据,并且这部分数据和页面的其它控件的数据存在前台和后台的交互. 问题 润乾报表在前台会生成自己的form, ...
- 润乾报表如何使用Echarts
1. 润乾报表中使用Echarts统计图的步骤 2. 报表中添加echarts2统计图 选中需要设为统计图的单元格,点击 报表-第三方图形 菜单项,或者右键菜单-第三方图形,在图形编 ...
- 润乾报表整合到Tomcat服务器的部署过程
转载自:http://www.cnblogs.com/avivaye/archive/2012/11/16/2773681.html 使用第三方的报表设计器/服务器来快速的开发报表. 润乾服务器是使用 ...
- tomcat下部署润乾报表
因为项目需要,需要在项目中配置润乾报表,之前一直是用的jboss服务器,此处调整为tomcat时出错,然后各种找错,找答案,最后终于好了,然后总结一下. 首先在apache-tomcat-6.0.43 ...
- 今天我碰到了由于web.xml文件表头信息导致润乾报表启动失败的问题,解决方案如下
下面是从2.3,2.4.2.5 3.0集中版本的web.xml头信息的细节,当发现系统启动不报错但是该生成的功能没有正常生成,特别是在这次配置润乾报表的时候发现用2.4版本的时候,在web.xml中配 ...
- 润乾报表新功能–导出excel支持锁定表头
在以往的报表设计中,锁定表头是会经常被用到的一个功能,这个功能不仅能使浏览的页面更加直观,信息对应的更加准确,而且也提高了报表的美观程度.但是,很多客户在将这样的报表导出excel时发现exce ...
- 润乾报表与DERBY数据库的创建连接详解
1. 问题概述 1.Derby数据库的创建过程 2.润乾报表连接Derby数据库展现数据 概述: Derby是Apache Software Foundation (ASF)的一个的孵化器项目. ...
- 润乾报表在proxool应用下的数据源配置
大多数应用会使用proxool数据连接池,proxool.xml的配置文件如下: <?xml version="1.0″ encoding="UTF-8″?> & ...
- 润乾报表一个页面中的echarts地图与其他区块的联动
需求概述: DBD样式效果如下图所示,需要点击左侧地图中的地区,右侧的仪表盘,柱线图可以对应显示对应该地区的数据. 实现思路: 分别制作带有地图.仪表盘.柱线图的3张报表:将3张报表放到DBD中设置布 ...
- 润乾报表之制作List列表
一般情况洗啊,如果sql查到多条数据,使用表格扩展的方式在一张表格里面(横展.纵展):目前的需求是,以报表为单位,做成List.例如,如果查出3条数据,预览的时候,要有3张格式相同内容有异的报表.如图 ...
随机推荐
- Linux操作系统加固建议
1.1.1 口令锁定策略 1.执行备份 (1).redhat执行备份: #cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak (2).SUS ...
- tooltip 可算修复了~ view-design 的 table 的cell.vue
tooltip 可算修复了~ view-design 的 table 的cell.vue 就这个bug可是有年头了,可算是修复了 ViewUI/src/components/table/cell.vu ...
- SqlServer复制和订阅(实现主从同步)
SqlServer复制和订阅 注意: 1.登录必须是服务器名称不能是ip 2.订阅服务器不需要提前创建数据库 复制 1.展开要发布的数据库节点,找到复制下的本地发布 2.右击本地发布,选择本地发布 3 ...
- j-link仿真器的作用和价值以及Ubuntu下使用注意事项
一 J-LINK是什么? J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器.配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有A ...
- Docker 仓库国内镜像源
1.仓库镜像对应表 原始 镜像 docker.io ***.mirror.aliyuncs.com(点进去登录查看) hub-mirror.c.163.com dockerproxy.com quay ...
- JS(数组)
一 数组的概念 问:之前学习的数据类型,只能存储一个值.如果我们想存储班级中所有学生的姓名,那么该如何存储呢?答:可以使用数组(Array).数组可以把一组相关的数据一起存放,并提供方便的访问(获取) ...
- Android之Window和弹窗问题
目录介绍 10.0.0.1 Window是什么?如何通过WindowManager添加Window(代码实现)?WindowManager的主要功能是什么? 10.0.0.2 Window概念解析?W ...
- HDU 2045:不容易系列之(3)—— LELE的RPG难题(动态规划)
一.原题链接 Problem - 2045 (hdu.edu.cn) 二.题面 人称"AC女之杀手"的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多"Cole&quo ...
- 记录--这样封装列表 hooks,一天可以开发 20 个页面
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 这样封装列表 hooks,一天可以开发 20 个页面 前言 在做移动端的需求时,我们经常会开发一些列表页,这些列表页大多数有着相似的功能: ...
- Jmeter教程-前言
前言 为什么要撰写这样一个教程呢? 深入学习Jmeter 温故而知新,通过编写教程,我将更深入地学习JMeter.尽管我已经使用JMeter很长时间,但还有许多元件我并不十分了解.为了创作一个详尽且实 ...