zoukankan      html  css  js  c++  java
  • 润乾报表如何从 mongodb 中取数

    MongoDB 属于 NoSql 中的基于分布式文件存储的文档型数据库,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,但是由于其属于 nosql 型,所以很难想普通数据库那样通过 jdbc 连接,通过 sql 取数,下面介绍下,如何在润乾报表中连接 mongodb 并从中取数。

    针对于一些特殊数据库(不能用 jdbc 或者 odbc 连接),润乾开发了外部库功能,对一些特殊数据库功能进行了封装,直接使用封装后的函数就可以实现特殊数据库的连接、读取、计算等功能,要想使用外部库功能,需要集算器或者脚本数据集的支持。

    集算器中连接方法:

    集算器中设置外部库可以参考文档(如不需要集算器直接使用报表,此处可略过):

    集算器外部库指南:(http://c.raqsoft.com.cn/article/1532597958129)

    外部库 jar 包下载地址:(http://c.raqsoft.com.cn/article/1532597958129)

    具体使用见文档中即可,比如现在 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:extlibMongodbCli 中,在这个目录中有个 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 标签设置外部库的根目录

    importLibs 设置外部库中对应数据库的 jar 存放目录。

    常见问题:

    设置完脚本数据集,预览报表时,通常会报错:无法识别的表达式 mongo_open()

    解决办法:

    1、查看外部库设置是否正常

    2、现在 mongodb 通常为 64 位,并且润乾的 mongoCli.jar 也是基于高版本的 jdk 编译,所以检查报表安装时的 jdk 版本,设计器自带的是 1.6,建议安装时选择本机高版本的 jdk

    这样,润乾报表就可以连接 mongodb 数据库,并且从中取数数据进行展示。当然,集算器脚本中还提供了 mongodb 的更多计算方法,具体可以访问润乾乾学院:http://c.raqsoft.com.cn/,右上角搜索栏中搜多 mongodb,会列出更多资源,可进行参考:

    更多数据源相关问题请查看:数据源相关问题分类导航

  • 相关阅读:
    哨兵模式(工作中使用)
    JVM调优-考虑方向
    Spring Cloud Gateway+Nacos出现服务乱串的问题记录
    golang笔记-cache组件应用: freecache/groupcache/golang-lru
    C++优化笔记: -O2/-O3/-ffast-math/SIMD
    linux笔记-查看L1/L2/L3 cache大小
    Dom4j 如何输出 Document 中的内容到文本
    是应该是用 Log 还是 Logger 来定义 Log
    IntelliJ IDEA 如何针对Java 代码快速打印 println
    如何用 Java 判断一个给定的数是不是素数
  • 原文地址:https://www.cnblogs.com/IBelieve002/p/11586292.html
Copyright © 2011-2022 走看看