润乾报表如何从 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 ] 编译 ffmpeg 使用 AV1 编码 svt_av1 编码器
编译带 AV1 编码器的 ffmpeg 安装 aom git clone --depth 1 https://aomedia.googlesource.com/aom mk build cmake - ...
- MySQL联接表总结笔记
SQL最强的的工呢过之一就是能够在护具检索查询的执行中联结表,联结表利用SQL的select能执行的最重要的操作,很好的理解联结及其语法学习SQL的一个重要的组成部分. 在能够有效的使用联结前,必须了 ...
- 深入浅出Java多线程(十一):AQS
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第十一篇内容:AQS(AbstractQueuedSynchronizer).大家觉得有用请点赞,喜欢请关注!秀才在此谢 ...
- Navicat 通过 Http通道 连接远程 Mysql
https://jingyan.baidu.com/article/3d69c551aa54dff0cf02d7a0.html 注意本机ip填写 localhost
- shell脚本中将 IFS (Internal Field Separator 内部字段分隔符)替换为换行符
将 IFS 中的空白符(换行.制表符.空格)修改为仅包含换行 IFS 是shell中的内部变量,在使用 for var in var_list;do use $var do something don ...
- 使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
前言 在.NET应用开发中数据集的交互式显示是一个非常常见的功能,如需要创建折线图.柱状图.饼图.散点图等不同类型的图表将数据呈现出来,帮助人们更好地理解数据.发现规律,并支持决策和沟通.本文我们将一 ...
- Android 多module情况下module依赖aar问题处理
原文: Android 多module情况下module依赖aar问题处理 - Stars-One的杂货小窝 问题描述 负责一个大项目Android工程项目,新增了一个module,而此module由 ...
- cpprestsdk移植到mingw,项目上传至github
如题 https://github.com/bbqz007/cpprestsdk4mingw 移植过程解决的问题,下面列出其中一些问题: 1. mingw对#pragma once支持不好. 须要在所 ...
- 数据好合: Argilla 和 Hugging Face Spaces 携手赋能社区合力构建更好的数据集
最近,Argilla 和 Hugging Face 共同 推出 了 Data is Better Together 计划,旨在凝聚社区力量协力构建一个对提示进行排名的偏好数据集.仅用几天,我们就吸引了 ...
- mybatis 中 if else 写法
mybaits 中没有else要用chose when otherwise 代替 <choose> <when test=""> //... </wh ...