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 中取数的更多相关文章

  1. 润乾报表JSF FORM 标签中使用填报表解决方案

     需求 润乾报表的标签需要在jsf页面中和其他填报控件一起使用,润乾报表负责展现录入部分数据,并且这部分数据和页面的其它控件的数据存在前台和后台的交互. 问题 润乾报表在前台会生成自己的form, ...

  2. 润乾报表如何使用Echarts

     1.    润乾报表中使用Echarts统计图的步骤 2.    报表中添加echarts2统计图 选中需要设为统计图的单元格,点击 报表-第三方图形 菜单项,或者右键菜单-第三方图形,在图形编 ...

  3. 润乾报表整合到Tomcat服务器的部署过程

    转载自:http://www.cnblogs.com/avivaye/archive/2012/11/16/2773681.html 使用第三方的报表设计器/服务器来快速的开发报表. 润乾服务器是使用 ...

  4. tomcat下部署润乾报表

    因为项目需要,需要在项目中配置润乾报表,之前一直是用的jboss服务器,此处调整为tomcat时出错,然后各种找错,找答案,最后终于好了,然后总结一下. 首先在apache-tomcat-6.0.43 ...

  5. 今天我碰到了由于web.xml文件表头信息导致润乾报表启动失败的问题,解决方案如下

    下面是从2.3,2.4.2.5 3.0集中版本的web.xml头信息的细节,当发现系统启动不报错但是该生成的功能没有正常生成,特别是在这次配置润乾报表的时候发现用2.4版本的时候,在web.xml中配 ...

  6. 润乾报表新功能–导出excel支持锁定表头

     在以往的报表设计中,锁定表头是会经常被用到的一个功能,这个功能不仅能使浏览的页面更加直观,信息对应的更加准确,而且也提高了报表的美观程度.但是,很多客户在将这样的报表导出excel时发现exce ...

  7. 润乾报表与DERBY数据库的创建连接详解

     1. 问题概述 1.Derby数据库的创建过程 2.润乾报表连接Derby数据库展现数据 概述: Derby是Apache Software Foundation (ASF)的一个的孵化器项目. ...

  8. 润乾报表在proxool应用下的数据源配置

     大多数应用会使用proxool数据连接池,proxool.xml的配置文件如下: <?xml version="1.0″ encoding="UTF-8″?> & ...

  9. 润乾报表一个页面中的echarts地图与其他区块的联动

    需求概述: DBD样式效果如下图所示,需要点击左侧地图中的地区,右侧的仪表盘,柱线图可以对应显示对应该地区的数据. 实现思路: 分别制作带有地图.仪表盘.柱线图的3张报表:将3张报表放到DBD中设置布 ...

  10. 润乾报表之制作List列表

    一般情况洗啊,如果sql查到多条数据,使用表格扩展的方式在一张表格里面(横展.纵展):目前的需求是,以报表为单位,做成List.例如,如果查出3条数据,预览的时候,要有3张格式相同内容有异的报表.如图 ...

随机推荐

  1. SpringCloud zookeeper和consul 的介绍和基本搭建

    1. Spring Cloud 集成 zookeeper Spring Cloud 集成了 zookeeper ,通过一些简单的注释,就可以快速注册到zookeeper 服务中 并且支持Spring ...

  2. Android---Android 开发四大组件

    Android 应用程序组件 应用程序组件是一个Android应用程序的基本构建块.这些组件由应用清单文件松耦合的组织.AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互 ...

  3. 牛客周赛 Round 31(A~F)

    目录 A B C D E F A #include <bits/stdc++.h> #define int long long #define rep(i,a,b) for(int i = ...

  4. IDEA关联Tomcat(详细教程+安装包)

    IDEA关联Tomcat 下载Tomcat安装包并解压到全英文目录 第一步:打开IDEA--Settings 第二步:搜索application--进入Application Services--点击 ...

  5. mybatis-plus详细使用教程

    mybatis-plus使用教程 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章http://www.javaman.cn/jszw/mybatis-plus 什么是Mybati ...

  6. Adapter分组封装

    YCGroupAdapter 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 使用建议 03.常用a ...

  7. openApi generator总是生成类名为 defaultApi

    生成器可以开启 useTags 设置,开启之后会根据 api 文档中的 tags 生成前缀类名,因此,要不生成 defaultApi 需要以下操作: 1.openApi 文档中每个 url 必须要有 ...

  8. STL:vector中如何使用at()来避免程序报错

    #include <iostream> #include <vector> using namespace std; int main() { vector<int> ...

  9. Button按钮Effect的用法

    教大家写一个好看的Button按钮 代码简单粗暴 <Grid > <Border Width="200" Height="30" Margin ...

  10. 用Vue3.0 写过组件吗?如果想实现一个 Modal你会怎么设计?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.组件设计 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式 现在有一个场景,点击新增与编辑都弹框出来进行 ...