MongoDB系列之Studio_Robot 3T客户端

概述

说到MongoDB客户端,不要太多,有免费的也有付费的。每个人都有他习惯使用的客户端IDE。除JetBrains公司出品的超强DataGrip外,Robot 3T值得一提。

Robot 3T,用C++编写,有限开源免费,部分高级功能需要付费购买license,现已更名为Studio 3T。

实战

省略搜索下载安装等步骤。

连接

输入基本的IP或URL、Port信息后,切换到Authentication标签页:
在这里插入图片描述
对于MongoDB 4.0及以上版本,鉴权机制选择SCRAM-SHA-256,低于4.0版本,则选择SCRAM-SHA-1。不难得知,前者使用更高级的SHA算法,安全性更高。

输入用户名及密码,点击连接测试。如果连接要等3秒左右以上,则一般是连接失败。

切换到Proxy标签页,Studio 3T默认使用第二个,即Application default proxy。选择第一个不使用代理,再次尝试,则连接成功。鄙人遇到的就是这个Proxy导致连接失败的问题。
在这里插入图片描述

概述

界面非常清爽,主要就是熟悉的Connect、Import、Export,及IntelliShell(智能版Shell命令行执行窗口)。
在这里插入图片描述
鼠标放在某个连接上,会给出Connection概要信息:
在这里插入图片描述
鼠标放在某个Database上,会给出概要信息:
在这里插入图片描述
鼠标放在某个Collection上,会给出概要信息:
在这里插入图片描述
选中某个Connection,右键:
在这里插入图片描述
选中某个Database后,右键:
在这里插入图片描述
选中某个集合后,右键:
集合

集合

双击某个集合,默认查询50条数据。界面操作几乎可以一目了然。

不足的是,排序功能并不是全局排序,只是对当前页面50条(可修改)数据进行排序:
在这里插入图片描述
三种视图:
在这里插入图片描述
Table View:以传统关系型数据库样式显示多条文档的多个字段
JSON View:以JSON格式显示
Tree View:树形,个人感觉比较适合数组类字段

右下角展示数据查询耗时,没有包括渲染,点击Count Documents,则显示集合文档总数,即count()函数。
在这里插入图片描述

设置

默认查询50条数据,可改成10。

值得一提的是,Studio 3T支持修改UTC时区。参考MongoDB日期存储与查询、@Query、嵌套字段查询实战总结,我们处于北京时间,即东八区,即UTC+8小时区。应用层的日期类型不管是定义成Date、Instant还是LocalDateTime,存储到MongoDB时,都会存储为ISODate时间,UTC+0时间。
在这里插入图片描述
查询MongoDB日期时,会发现数据库内存在大量半夜及凌晨时间段的数据(作为一款极低频App,这个时间是不正常的)
在这里插入图片描述
可通过设置UTC时区来调整日期类数据展示效果:
在这里插入图片描述
设置后再次执行查询结果如下:
在这里插入图片描述
如果同时调整展示格式为Default Locale,效果如下:在这里插入图片描述

导出

即Export,从上面三张截图,不难得知,Studio 3T提供3个级别的导入导出操作,从小到大:单个集合,多个集合(即单Database维度),多Database(即Connection维度)。

以单个集合为例,右键Export Collection,默认使用BSON-mongodump选项,进入到如下界面保持默认配置,点击Run即可。
在这里插入图片描述
值得注意的是,导出格式有两种:

  • mongodump folder:导出为一个文件夹,包含两个文件,集合BSON文件和对应的元数据JSON文件。勾选压缩,则导出文件后缀名为.bson.gz.json.gz
  • mongodump archive:导出一个打包.agz文件,是否勾选压缩,文件后缀名不变。

在这里插入图片描述
不管是哪一种导出格式,分析文件(夹)大小,启用压缩选项后,可发现压缩率高达14%(原始文件142KB,压缩后仅20KB)。

注:仅测试并计算一个集合,不同集合其压缩率不可能完全一样。

元数据JSON文件:

{
    "indexes": [
        {
            "v": {
                "$numberInt": "2"
            },
            "key": {
                "_id": {
                    "$numberInt": "1"
                }
            },
            "name": "_id_",
            "ns": "corpus.mds_factors"
        },
    ],
    "uuid": "91390b63ff264b5ab30379870cd02f13",
    "collectionName": "mds_factors",
    "type": "collection"
}

indexes记录着集合的索引情况,ns即namespace,是Database.集合名type=collection,表明是一个集合,方便后续Import导入时先解析此元数据文件。

导入

即Import,提供JSON、CSV、SQL Database、BSON等各种不同数据源,且大多数都需要付费方可使用。上面导出时有两种格式,此时导入可以按需选择一种格式:
在这里插入图片描述
此处使用folder格式,选择文件夹:
在这里插入图片描述
注意得选择正确的路径,否则识别不到(下面截图,目录多了个/corpus,则无法发现Database和Connection)。点击右侧的Change target,进入连接管理器(Connection Manager)标签页,可更换连接目标,目标只支持connection级别切换:
在这里插入图片描述
选择好目标数据源,即Connection后,有很多连接选项:
在这里插入图片描述
选项:

  • --drop:导入集合前先删除
  • --keepIndexVersion:不更新索引版本
  • --noIndexRestore:不恢复索引
  • --noOptionsRestore:不恢复集合选项
  • --maintainInsertionOrder
  • --stopOnError:出现错误停止恢复(导入)
  • --bypassDocumentValidation:导入时不执行文档检验
  • --writeConcern
  • --restoreDbUsersAndRoles:恢复选择的DB的用户和角色定义
  • --oplogReplay
  • --oplogLimit

Shell

IntelliShell

TODO:
没有自动补充功能?

参考

posted @ 2024-08-21 17:25  johnny233  阅读(72)  评论(0编辑  收藏  举报