MongoDB 数据库插件

  • 文档创建者:tyro668
  • 编辑次数:28次
  • 最近更新:Leo.Tsai 于 2020-04-27
  • 1. 概述

    1.1 版本

    报表服务器版本JAR 包版本 插件版本 
    10.02018-11-30V9.4.8
    9.02019-02-26V9.4.7
    8.02019-02-26V9.4.7

    1.2 应用场景

    MongoDB 作为一款非常流行的 NoSQL 数据库,越来越被广泛地使用,但是帆软报表中 JDBC 和 JNDI 都无法连接 MongoDB 进行取数,安装该插件可以连接 MongoDB 数据库。

    有关 MongoDB 的介绍和使用方法可以参阅MongoDB官方帮助文档的说明。

    1.3 功能介绍

    • 设计器菜单栏服务器>定义数据连接处会新增MongoDB类型的数据连接方式。

    • 定义好数据连接后,数据集管理面板处新增MongoDB明细数据集MongoDB聚合数据集

    注:目前只支持在设计器中定义 MongoDB 数据连接,不支持在决策平台进行连接。

    2. 操作步骤

    2.1 安装插件

    点击下载插件:mongodb数据库

    设计器插件安装方法参照:设计器插件管理

    服务器安装插件方法参照:服务器插件管理

    2.2 定义数据连接

    插件安装后,点击设计器菜单栏服务器>定义数据连接,新建一个MongoDB类型的数据连接,根据实际场景填写数据库连接信息,点击测试连接,弹出连接成功对话框后,点击确定保存即可。
    Snag_b04df6e.png

    2.3 添加 MongoDB 明细数据集

    左下角数据集管理面板处添加一个MongoDB明细数据集,打开数据库查询面板,填写相关查询信息后,即可预览到 MongoDB 数据库表中的数据。

    下面以示例分别说明如何查询 MongoDB 中简单型数据、数组型数据、对象型数据这三种不同的数据类型。

    Snag_b148318.png

    1)简单型数据

    以查询 MongoDB 数据库 test 中的表 jaindanxing 为例,该表中的数据如下图所示:

    Snag_b26e380.png

    新建 MongoDB 明细数据集mongo1,如下图填写数据库查询信息。

    注:简单型数据没有维度可以不用填写,查询条件、过滤条件、排序条件根据需求填写。

    Snag_b3740a6.png

    点击数据库查询面板的预览按钮,结果如下图所示:
    Snag_b481609.png
    2)数组型数据

    MongoDB 是文档型数据库,每个文档( doc )表示一条数据记录。相比于关系型数据库的行记录 row 只能使用简单型数据,doc 能够使用复杂的数组型数据,可以将 doc 内嵌到数组中。

    MongoDB 的数组是一系列元素的集合,使用中括号 [] 表示数组,例如:[1,2,3] 中的元素是整数值,[{name:"t5"}, {name:"t7"}],[ {name:"t5", age:21}, {name:"t7", age:22} ]中的元素是 doc。

    以查询 MongoDB 数据库 test 中的表 shuzuxing 为例,该表中的数据如下图所示:

    Snag_b5a433c.png

    新建 MongoDB 明细数据集mongo2,不填写任何查询信息,直接查出该表中的所有数据。

    Snag_b637e36.png

    点击数据库查询面板的预览按钮,结果如下图所示:

    Snag_b65612e.png

    3)对象型数据
    以查询 MongoDB 数据库 test 中的表 duixiangxing 为例,该表中的数据如下图所示:

    Snag_b6ca912.png

    新建 MongoDB 明细数据集mongo3,不填写任何查询信息,直接查出该表中的所有数据。

    Snag_b73ccc5.png

    点击数据库查询面板的预览按钮,结果如下图所示:

    Snag_b76a3c2.png

    也可以根据维度来展示数据,如下图填写好维度信息,根据维度筛选数据。

    Snag_b78a34c.png

    点击数据库查询面板的预览按钮,结果如下图所示:

    Snag_b79790a.png

    2.4 添加 MongoDB 聚合数据集

    1)左下角数据集管理面板处添加一个MongoDB明细数据集,打开数据库查询面板,填写相关查询信息后,即可预览到 MongoDB 数据库表中的数据。

    注:仅 V9.0 及之后版本支持聚合数据集

    Snag_b7c0e1d.png

    2)以查询 MongoDB 数据库 test 中的表 juhe 为例,该表中的数据如下图所示:

    Snag_b84ed79.png

    新建 MongoDB 明细数据集mongo4,数据库查询面板下拉选择聚合操作符,填写相应的

    注:这里是根据作者计算他所写的文章数。

    Snag_b8edde8.png

    点击数据库查询面板的预览按钮,结果如下图所示:

    Snag_b91828b.png

    3. 注意事项

    3.1 ISO 标准时间格式

    在 MongoDB 中时间要转换为 ISO 标准格式,如下图所示,查询日志中 2017-2-17 以前的记录:

    1576658882396627.png

    3.2 时间查询的时区问题

    1)问题描述

    查询 MongoDB 数据库表中的时间时,有时会出现设计器和 shell 工具查询出来结果不一致的问题。
    例如下图所示的查询语句:

    1576659868762373.png

    设计器中查询出的结果:

    1587951801617152.png

    shell 工具查询出的结果:

    1587951820459935.png

    2)原因分析

    用户录入时间数据的语句为:"REAL_SEND_DATETIME" : ISODate("2019-08-31T12:50:11.000Z"),该语句使用 ISODate() 函数插入了 GMT 时间,设计器查到的数据转换为本地时间会加上8个小时,这就导致了数据和查询差异。

    3)解决方案

    录入数据时使用了 GMT 时间,设计器中查询时使用'REAL_SEND_DATETIME': {$gt: ISODate('2019-01-01T00:00:00.000Z')}就可以得到正确的结果了,但是展示时候会转换为本机的时间。

    注:有关 MongoDB 中日期格式的使用可以查看官方文档的介绍:Date()

    附件列表


    主题: 数据准备
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!