DAY3 MongoDB 连线与 IDE

DAY3 MongoDB 连线与 IDE

MongoDB 的连线方式主要有三种,分别是:

  • legacy mongo shell
  • mongo shell
  • IDE

学习以及开发阶段,我会比较推荐使用 legacy mongo shell 搭配 IDE 的方式,不过这只是建议并非绝对。主要是 mongo shell 固然强大,但需要额外下载才能使用,一旦遇上没有 mongo shell 的环境,在反应上可能会略差一点,尤其是线上产品的支援环境不见得会有,有的话那就万幸了。

legacy mongo shell

这边说的 legacy mongo shell 执行档就是 5.0 之前的版本,也就是安装好 MongoDB 内建的版本。会推荐的原因是少了 intellisense (是缺点也是优点),因此使用上会对指令记忆度最高,且不受环境影响,有安装 MongoDB 的,肯定也会有这套。

如果使用 docker,那还真的是本机不见得会有呢(马上打脸上面),解决方案就是连进 container 使用,docker exec -it mongo bash,还是有 mongo 可以使用的啦!

连线方法

mongo --host localhost --port 27666

➜  vscode mongo --host localhost --port 27666
MongoDB shell version v4.2.7
connecting to: mongodb://localhost:27666/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1ef3b716-b894-4a60-84fe-de2f9e7984e2") }
MongoDB server version: 5.0.2
WARNING: shell and server versions do not match
...(省略)
>

可以从上面看到虽然我的 MongoDB 是 5.0.2 版本,但还是在使用 MongoDB shell v4.2.7,系统会提出警示版本不搭配,至於会出现什麽错误,我目前是还没碰过。

mongo shell

MongoDB 5.0 之後 Mongo shell 正式被搬出来,需要另外进行安装。那麽 mongosh 好在哪呢?

  • 针对 Intelligence 功能更强化
  • 对於很多旧式的语法都会给予提醒或者直接拒绝
  • 如果连线对象是 replica set 的次节点,也不用特别再指定 rs.secondaryOk()
  • 型别修改,从 NumberInt 改为 Int32
  • 可回顾每个 session 的 log。
  • 可回顾 mongosh 的指令历史
  • 回传的文字有更多色彩,方便查看
  • 格式呈现更方便查看
  • 更强大的语法错误提示

mongosh session log

  • 先输入 mongosh 确认本次的 log id
$ mongosh
Current Mongosh Log ID: c2961dbd6b73b052671d9df0
Connecting to: mongodb://127.0.0.1:27017
Using MongoDB: 4.2.8
Using Mongosh: 1.0.5
  • 再到 ~/.mongodb/mongosh/[logId]_log 查看
cat ~/.mongodb/mongosh/<LogID>_log

mongosh command history

查看历史输入指令,一样也存在 mongosh 资料夹底下,完整路径为:

~/.mongodb/mongosh/.mongosh_repl_history

安装 mongosh

MacOS 安装方法很简单

  1. 安装 Homebrew
  2. 执行 brew install mongosh
  3. 允许 mongosh 执行权限(macOS安全)

大功告成罗~

连线方法

其实一模一样,只是改用 mongosh 执行档

mongosh --host localhost --port 27666

➜  vscode mongosh --host localhost --port 27666
Current Mongosh Log ID:	612cc2e97977cef8180746b9
Connecting to:		mongodb://localhost:27666/?directConnection=true&serverSelectionTimeoutMS=2000
Using MongoDB:		5.0.2
Using Mongosh:		1.0.5

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting:
   2021-08-30T11:37:05.176+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

仔细看的话会多了这次的 Log ID,可以用此 ID 去查到这次

离线安装

  1. 官网下载 mongosh 压缩档
  2. 解压缩 unzip xxx.zip
  3. 提升 mongosh 执行档的权限
    chmod +x bin/mongosh
    chmod +x bin/mongocryptd-mongosh
  4. 设定 mongosh 执行档的环境路径
sudo cp bin/mongosh /usr/local/bin/
sudo cp bin/mongocryptd-mongosh /usr/local/bin/
sudo ln -s $(pwd)/bin/* /usr/local/bin/
  1. 允许 mongosh 执行权限(macOS安全)

IDE

其实系统在开发时,我主要还是以 IDE 为主且还是两套,因为各有优缺,所以才会同时使用。

Robo 3T

这套是 robomongo 的前身,後来被整并到 3T 软件底下,是完全免费且开源的软件。功能较为阳春但很轻巧,开启连线速度极快,是我大部分开发时使用的软件。

Robo 3T 官方下载位置,同时可以看到另外一套叫做Studio 3T,是另一款须付费的连线IDE,更多图形化的工具让你减少指令的操作以及固定排成事务。我本身是没有使用过,因为目前的功能都足以应付开发上使用了。

连线方法

  • Step1 点击 Create 设定连线资讯
    https://ithelp.ithome.com.tw/upload/images/20210902/20140504ZZEi1i8mZW.png

  • Step2 输入连线资讯後按下 save
    https://ithelp.ithome.com.tw/upload/images/20210902/20140504aHNdgh6d7S.png

连线後就能够看到整个介面,可以多行编辑你的语法,资料区也可以用 json、table 方式呈现,算是五脏俱全的 IDE
https://ithelp.ithome.com.tw/upload/images/20210902/20140504nhHxPpXdYf.png

MongoDB Compass Community

由 MongoDB 开发人员开发的,如标题,同样有分为社群版和企业版。在自己学习 MongoDB 的情况下,使用社群版即可。它的特点是:

  • 图形化介面远胜於 Robo 3T
  • 画面上有更多的资讯,像是 Collection 大小,文件的大小
  • 更强大的汇入汇出资料功能
  • aggregation pipeline builder
  • 图形化的 explain

其实都远胜於 Robo 3T,但唯独它的开启速度真的略慢,而我也不常使用这些功能(或是直接使用指令),因此比较常直接使用 Robo 3T。

MongoDB Compass 官方下载位置

连线方法

照着步骤,一样的连线资讯,只是改成使用 mongodb 的连线协定。
mongodb://localhost:27666
https://ithelp.ithome.com.tw/upload/images/20210902/20140504ubNWLPAhrZ.png

可以看到功能更丰富了,包含上述的那些,请各位自行去摸索看看了
https://ithelp.ithome.com.tw/upload/images/20210902/20140504gB5be45IL5.png


本系列文章会同步发表於我个人的部落格 Pie Note


<<:  [Day 02] 用Laravel写单元测试

>>:  Day 0x2 UVa11150 Cola

【C#】物件导向的三大特性

今天我们来看到~物件导向的三大特性~ 什麽是物件呢~ 物件是指类别的实例。 例如,有一个类别是Car...

DAY3-EXCEL统计分析:认识离散型机率

离散型机率 离散行机率包括很多种,例如:白努利型分布(Bernoulli distribution)...

[常见的自然语言处理技术] 文本相似度(IV): 建立自己的Word2vec模型

前言 原本以为文本相似度这个主题两天就可以结束了,没想到花了四天来讲。今天将会是介绍自然语言处理基础...

[DAY 24] Dataset 的处理

前言 我们在 Training 的过程的中,一个很重要的 Part 就是如何出一个 Powerful...

margin & padding - 金鱼都能懂的CSS必学属性

margin 与 padding 这两个属性应该是所有新手必学的两大属性,也是网页入门必备的一项常识...