历史版本27 :MongoDB 数据库插件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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

设计器中查询出的结果:

1576659963101972.png

shell 工具查询出的结果:

1576660055197157.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()