概述

说到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.gzmongodump 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: 没有自动补充功能?

参考

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: