MongoDB的安装与连接
MongoDB简介
MongoDB是一种以文档的形式存储的NoSQL数据库。MongoDB分付费版和免费版本,云服务版本Atlas和企业高级版本是需要付费的。MongoDB社区版本是开源的,开源代码仓库地址是:
https://github.com/mongodb/mongo
MongoDB主要分为以下三个部分:
- mongod - 数据库服务
- mongos - 分片路由
- mongo - 命令行客户端
如果你用的是MacOS系统,一种可用的方式是使用Homebrew软件管理系统进行安装。brew命令的使用及参数说明如下:
$ brew --help
Example usage:
brew search [TEXT|/REGEX/]
brew info [FORMULA...]
brew install FORMULA...
brew update
brew upgrade [FORMULA...]
brew uninstall FORMULA...
brew list [FORMULA...]Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULAContributing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
安装前最好使用如下命令先更新一下软件包仓库。
brew update
如果想要安装的是包管理器中的默认版本,使用如下的命令安装即可。
brew install mongodb
如果你不知道有哪些版本的MongoDB可用,可以使用安装包搜索命令行搜索一下Homebrew支持的版本,并选择相应的版本进行安装。
brew search mongodb
如果你不清楚之前你有没有安装过,或者安装的是哪个版本,可以使用如下命令进行查询。
brew info mongodb
源代码编译安装
如果用的不是常规的Linux、MacOS、Windows等操作系统。你可下载MongoDB的源代码进行构建后安装与运行。
详细的构建过程可以参考如下链接:
https://github.com/mongodb/mongo/blob/master/docs/building.md
离线包安装
如果你用的是常规的操作系统,一般情况下,只需要直接下载编译好的包安装即可。安装包的下载地址为:
- 企业版
- 社区版
- 如果你的操作系统是Redhat,下载.rpm文件后,使用yum命令进行安装。
- 如果你的操作系统是Ubuntu,下载.deb文件后,使用apt-get命令进行安装。
- 如果你的操作系统是Windows,下载.msi文件后,直接点击后进行安装。
- 如果你使用的是MacOS,只能下载.tgz的压缩包,解压后运行
mongod
服务即可。
Docker方式安装
我推荐的安装方式是使用Docker镜像的方式安装与使用MongoDB。因为Docker的方式运行与管理服务比较方便,运行环境与本机环境相互隔离,可以避免相互之间的诸多干扰。
在使用Docker安装monbodb之前,当然你需要先准备好docker的运行环境。如果你还没有安装docker,请参考官网进行安装,这里不作详细介绍。
如果你是个人研究使用,建议你直接下载安装Docker Desktop版本。
docke运行环境准备好以后,你可以使用如下的命令查询可选择的MongoDB镜像。
$ docker search mongodb
NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
mongoMongoDB document databases provide high avai…8848[OK]
mongo-expressWeb-based MongoDB admin interface, written w…1180[OK]
bitnami/mongodbBitnami MongoDB Docker Image177[OK]
percona/percona-server-mongodbPercona Server for MongoDB docker images36
rapidfort/mongodbRapidFort optimized, hardened image for Mong…13
circleci/mongoCircleCI images for MongoDB11[OK]
bitnami/mongodb-sharded7
bitnami/mongodb-exporter6
edgexfoundry/docker-edgex-mongoARCHIVED! MongoDB container for older versio…5
rancher/mongodb-conf2
percona/mongodb_exporterA Prometheus exporter for MongoDB including …2
ibmcom/mongodb-ppc64le1
edgexfoundry/docker-edgex-mongo-seedARCHIVED!Initializer for MongoDB for early E…1
edgexfoundry/docker-edgex-mongo-arm64ARCHIVED! ARM64 MongoDB container for older …1
ibmcom/mongodb1
jhipster/jhipster-sample-app-mongodbThis is a sample application created with JH…1[OK]
kope/mongodb0
ibmcom/mongodb-exporter-ppc64le0
ibmcom/mongodb-s390x0
ibmcom/mongodb-amd640
rapidfort/mongodb-perfomance-test0
radarbase/kafka-connect-mongodb-sinkKafka MongoDB sink connector0
rancher/mongodb-config0
radarbase/radar-hotstorageUpon the first start, this dockerised MongoD…0
drud/mongodbMongodb0[OK]
我一般选择是
STARS
比较高的镜像进行安装。你需要先通过docker pull
命令将Docker镜像下载的本地。$ docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
d7bfe07ed847: Pull complete
97ef66a8492a: Pull complete
20cec14c8f9e: Pull complete
38c3018eb09a: Pull complete
ccc9e1c2556b: Pull complete
593c62d03532: Pull complete
1a103a446c3f: Pull complete
be887b845d3f: Pull complete
e5543880b183: Pull complete
Digest: sha256:37e84d3dd30cdfb5472ec42b8a6b4dc6ca7cacd91ebcfa0410a54528bbc5fa6d
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest
你可以使用
docker images
命令查看本地已经下载好的所有Docker镜像。 $ docker images
REPOSITORYTAGIMAGE IDCREATEDSIZE
mongolatestc8b57c4bf7e34 days ago701MB
nginxlatestfa5269854a5e8 weeks ago142MB
ubuntulatestff0fea8310f33 months ago72.8MB
如果你使用的是
Docker Desktop
,在Dashboard的Images
栏也可以看到已经下载的所有镜像。文章图片
然后你就可以使用docker命令启动MongoDB服务了。
$ docker run --name mongodb -d -p 27017:27017 mongo
4a4df84c4bb959609a5754e0b8a94bcd7c272e42ad819af2dee12b72511e2dc9
上述命令中:
- --name 参数指定了运行容器的名字
- -d 参数表示在后台运行
- -p 27017:27017 指定了本机端口及monbod服务的端口
- 最后的mongo就是镜像的名字
docker exec -it 4a4df84c4bb959609a5754e0b8a94bcd7c272e42ad819af2dee12b72511e2dc9 /bin/sh
或
docker exec -it mongodb /bin/sh
如果想要停止运行MongoDB,只需执行如下命令即可。
docker stop mongodb
如果你不知道当前有哪些容器在运行,可以使用
docker ps
命令。$ docker ps
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
4a4df84c4bb9mongo"docker-entrypoint.s…"25 minutes agoUp 25 minutes0.0.0.0:27017->27017/tcpmongodb
如果想要查看已停止运行的窗口,需要增
-a
参数。$ docker ps -a
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
4a4df84c4bb9mongo"docker-entrypoint.s…"27 minutes agoExited (0) 46 seconds agomongodb
6509ea364e65nginx"/docker-entrypoint.…"6 weeks agoExited (255) 5 weeks ago0.0.0.0:8888->80/tcpnginx
81d2af2b4084ubuntu:latest"bash"2 months agoExited (0) 2 weeks agoubuntu
如果想要再次启动已停止的mongodb Docker容器,只需运行
dokcer start
命令即可。 docker start mongodb
连接数据库 连接串
在介绍连接工具以前,先给大家介绍一下MongoDB的数据库连接串的格式,一般如下:
mongodb://用户名:密码@主机名:端口/数据库名?连接参数
例如,
mongodb://localhost:27017/test?readPreference=primary&ssl=false
连接工具
连接MongoDB的工具比较多,下面列几种我知道的。
MongoDB VS Code插件 如果你使用的是VS Code IDE工具,你可以安装IDE的插件后进行连接。
文章图片
命令行工具 MongoDB Shell MongoDB的命令行工具也有好几种,你可以到官网下载自己喜欢的工具。下面我就以
mongosh
为例介绍如何使用。文章图片
和MonboDB的安装方法一样,也可以使用
brew intall mongosh
命令进行安装。如果你想要使用最新版本的mongosh
,你可以直接下载压缩包后解压使用,你可以使用
wget
命令通过命令行下载,或者使用浏览器的下载管理器进行下载。download 20220618 $ wget https://downloads.mongodb.com/compass/mongosh-1.5.0-darwin-x64.zip
--2022-06-18 17:40:44--https://downloads.mongodb.com/compass/mongosh-1.5.0-darwin-x64.zip
Resolving downloads.mongodb.com... 2600:9000:2200:8200:a:7588:fa00:93a1, 2600:9000:2200:d400:a:7588:fa00:93a1, 2600:9000:2200:1000:a:7588:fa00:93a1, ...
Connecting to downloads.mongodb.com|2600:9000:2200:8200:a:7588:fa00:93a1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 53504066 (51M) [application/octet-stream]
Saving to: 'mongosh-1.5.0-darwin-x64.zip'mongosh-1.5.0-darwin-x64.zip100%[===================================================================================>]51.03M14.2MB/sin 4.9s2022-06-18 17:40:50 (10.4 MB/s) - 'mongosh-1.5.0-darwin-x64.zip' saved [53504066/53504066]download 20220618 $ ls
mongosh-1.5.0-darwin-x64.zip
zip的压缩包,你可以使用
unzip
进行解压。$ unzip mongosh-1.5.0-darwin-x64.zip
Archive:mongosh-1.5.0-darwin-x64.zip
creating: mongosh-1.5.0-darwin-x64/
inflating: mongosh-1.5.0-darwin-x64/THIRD_PARTY_NOTICES
inflating: mongosh-1.5.0-darwin-x64/._THIRD_PARTY_NOTICES
creating: mongosh-1.5.0-darwin-x64/bin/
inflating: mongosh-1.5.0-darwin-x64/bin/mongosh_crypt_v1.dylib
inflating: mongosh-1.5.0-darwin-x64/bin/mongosh
inflating: mongosh-1.5.0-darwin-x64/LICENSE-crypt-library
inflating: mongosh-1.5.0-darwin-x64/._LICENSE-crypt-library
inflating: mongosh-1.5.0-darwin-x64/LICENSE-mongosh
inflating: mongosh-1.5.0-darwin-x64/._LICENSE-mongosh
inflating: mongosh-1.5.0-darwin-x64/README
inflating: mongosh-1.5.0-darwin-x64/._README
inflating: mongosh-1.5.0-darwin-x64/mongosh.1.gz
inflating: mongosh-1.5.0-darwin-x64/._mongosh.1.gz
进入到解压目录,使用
ls
命令查看目录下的内容。$ cd mongosh-1.5.0-darwin-x64
mongosh-1.5.0-darwin-x64 20220618 $ ls
LICENSE-crypt-libraryLICENSE-mongoshREADMETHIRD_PARTY_NOTICESbinmongosh.1.gz
mongosh-1.5.0-darwin-x64 20220618 $ ls bin
mongoshmongosh_crypt_v1.dylib
在bin目录下,可以看到
mongosh
命令。安装好以后,可以使用help命令查看帮助。或参考官方文档
$ bin/mongosh --help$ mongosh [options] [db address] [file names (ending in .js or .mongodb)]Options:-h, --helpShow this usage information
-f, --file [arg]Load the specified mongosh script
--host [arg]Server to connect to
--port [arg]Port to connect to
--versionShow version information
--verboseIncrease the verbosity of the output of the shell
--quietSilence output from the shell during the connection process
--shellRun the shell after executing files
--nodbDon't connect to mongod on startup - no 'db address' [arg] expected
--norcWill not run the '.mongoshrc.js' file on start up
--eval [arg]Evaluate javascript
--retryWritesAutomatically retry write operations upon transient network errors (Default: true)Authentication Options:-u, --username [arg]Username for authentication
-p, --password [arg]Password for authentication
--authenticationDatabase [arg]User source (defaults to dbname)
--authenticationMechanism [arg]Authentication mechanism
--awsIamSessionToken [arg]AWS IAM Temporary Session Token ID
--gssapiServiceName [arg]Service name to use when authenticating using GSSAPI/Kerberos
--sspiHostnameCanonicalization [arg]Specify the SSPI hostname canonicalization (none or forward, available on Windows)
--sspiRealmOverride [arg]Specify the SSPI server realm (available on Windows)TLS Options:--tlsUse TLS for all connections
--tlsCertificateKeyFile [arg]PEM certificate/key file for TLS
--tlsCertificateKeyFilePassword [arg]Password for key in PEM file for TLS
--tlsCAFile [arg]Certificate Authority file for TLS
--tlsAllowInvalidHostnamesAllow connections to servers with non-matching hostnames
--tlsAllowInvalidCertificatesAllow connections to servers with invalid certificates
--tlsCertificateSelector [arg]TLS Certificate in system store (Windows and macOS only)
--tlsCRLFile [arg]Specifies the .pem file that contains the Certificate Revocation List
--tlsDisabledProtocols [arg]Comma separated list of TLS protocols to disable [TLS1_0,TLS1_1,TLS1_2]
--tlsUseSystemCALoad the operating system trusted certificate listAPI version options:--apiVersion [arg]Specifies the API version to connect with
--apiStrictUse strict API version mode
--apiDeprecationErrorsFail deprecated commands for the specified API versionFLE Options:--awsAccessKeyId [arg]AWS Access Key for FLE Amazon KMS
--awsSecretAccessKey [arg]AWS Secret Key for FLE Amazon KMS
--awsSessionToken [arg]Optional AWS Session Token ID
--keyVaultNamespace [arg]database.collection to store encrypted FLE parameters
--kmsURL [arg]Test parameter to override the URL of the KMS endpointDB Address Examples:fooFoo database on local machine
192.168.0.5/fooFoo database on 192.168.0.5 machine
192.168.0.5:9999/fooFoo database on 192.168.0.5 machine on port 9999
mongodb://192.168.0.5:9999/fooConnection string URI can also be usedFile Names:A list of files to run. Files must end in .js and will exit after unless --shell is specified.Examples:Start mongosh using 'ships' database on specified connection string:
$ mongosh mongodb://192.168.0.5:9999/shipsFor more information on usage: https://docs.mongodb.com/mongodb-shell.
使用
mongosh + 数据库连接串
的命令格式就可以连接MongoDB数据库。 $ bin/mongosh mongodb://localhost:27017/test?readPreference=primary&ssl=false
[1] 95538
zsh: no matches found: mongodb://localhost:27017/test?readPreference=primary
[1]+ exit 1bin/mongosh mongodb://localhost:27017/test?readPreference=primary
mongosh-1.5.0-darwin-x64 20220618 $ bin/mongosh mongodb://localhost:27017/?readPreference=primary&ssl=false
[1] 96068
zsh: no matches found: mongodb://localhost:27017/?readPreference=primary
[1]+ exit 1bin/mongosh mongodb://localhost:27017/?readPreference=primary
mongosh-1.5.0-darwin-x64 20220618 $ bin/mongosh 'mongodb://localhost:27017/test?readPreference=primary&ssl=false'
Current Mongosh Log ID:62ad9f8dcf4bc59ca9c419d4
Connecting to:mongodb://localhost:27017/test?readPreference=primary&ssl=false&directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.0
Using MongoDB:5.0.9
Using Mongosh:1.5.0For mongosh info see: https://docs.mongodb.com/mongodb-shell/------
The server generated these startup warnings when booting
2022-06-18T09:17:35.706+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2022-06-18T09:17:36.761+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------------
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
------Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.
test>
然后你可以使用MongoDB的命令操作MongoDB数据库了。
test> db.test.insertOne({name:'zhangshan'})
{
acknowledged: true,
insertedId: ObjectId("62ada01d12bb4d27b24d3a6c")
}
test> db.test.findOne()
{ _id: ObjectId("62ada01d12bb4d27b24d3a6c"), name: 'zhangshan' }
test>
MongoDB Compass 首先需要去官网下载安装包。
文章图片
如果你使用的MacOS,点击执行下载的安装包后,会弹出如下的界面。你需要将MongoDB Compass的图标拖到或侧的文件夹下。
文章图片
安装好以后,执行已安装的MongoDB Compass 应用,会显示如下的界面。
文章图片
如果是第一次安装,你可能会看到使用提示窗,如果你不想看,直接关掉即可。在主界面,打开
Advanced Connection Options
你可以设置更详细的参数。文章图片
填写好连接参数后,点击
Connect
按钮,即可以连接到MongoDB数据库。文章图片
你可以打开要操作的Collection,并通过
Insert Document
操作插入新的文档。文章图片
在打开的新对话框中,填写要插入的内容。
文章图片
点击
Insert
按钮插入文档后,可以看到当前Collection的数据情况。文章图片
当然,通过Compass你也可以进行其它的一些操作。
MongoDB Tools 首先需要去官网获取并下载压缩包。
文章图片
然后解压,并查看解压目录如下:
unzip mongodb-database-tools-macos-x86_64-100.5.3.zip
Archive:mongodb-database-tools-macos-x86_64-100.5.3.zip
creating: mongodb-database-tools-macos-x86_64-100.5.3/
inflating: mongodb-database-tools-macos-x86_64-100.5.3/LICENSE.md
creating: mongodb-database-tools-macos-x86_64-100.5.3/bin/
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongodump
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/bsondump
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongotop
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongoexport
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongoimport
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongostat
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongorestore
inflating: mongodb-database-tools-macos-x86_64-100.5.3/bin/mongofiles
inflating: mongodb-database-tools-macos-x86_64-100.5.3/THIRD-PARTY-NOTICES
inflating: mongodb-database-tools-macos-x86_64-100.5.3/README.md
download 20220618 $ cd mongodb-database-tools-macos-x86_64-100.5.3
mongodb-database-tools-macos-x86_64-100.5.3 20220618 $ ls
LICENSE.mdREADME.mdTHIRD-PARTY-NOTICESbin
mongodb-database-tools-macos-x86_64-100.5.3 20220618 $ ls bin
bsondumpmongodumpmongoexportmongofilesmongoimportmongorestoremongostatmongotop
在
bin
目录下,可以看到如下的一些命令行工具。文章图片
其中,
- mongodump 用于以二进制的方式备份并导出MongoDB数据库
- mongorestore 用于将mongodump导出的数据恢复到MongoDB数据库中
- bsondump 用于将二进制的导出数据转化为JSON格式
- mongoexport 用于导出JSON或CSV格式的数据
- mongoimport 用于导入JSON或CSV格式的数据
- mongostat 用于显示MongoDB服务实例运行情况的统计信息
- mongotop 用于显示最耗时的数据读写操作
- mongofiles 用于操作MongoDB中以GridFS形式存储文件对象
MongoDB的客户端驱动支持大部分当前常用的开发语言:
文章图片
如果你想要了解更多的客户端驱动,可以访问以下的链接:
https://www.mongodb.com/docs/drivers/
更多的时候,我们可能不会直接使用官方提供客户端连接并操作数据,而是使用第三方封装好的开发框架进行访问,如,你可能习惯使用Spring技术栈,你可以使用spring-data-mongodb。
其它的连接工具 除了以上介绍的MongoDB客户端连接工具外,还有很多工具供你选择使用,如,
- 针对Atlas的CLI
- 针对BI的Connector等等
参考资料
- MongoDB官方文档
- 客户端连接驱动
- https://formulae.brew.sh/
- Docker官网
- Mongo Tools使用说明
推荐阅读
- 读书笔记之《网络是怎样连接的》
- 直播预告|多年终端安全沉淀,源自支付宝的全链路安全防护建设
- Nydus —— 下一代容器镜像的探索实践
- 转正实录|陪你走一段路
- 手机termux安装Linux发行版实现无root安装青龙面板
- 新手也可以读懂的|新手也可以读懂的 React18 源码分析(一)
- 类型安全的|类型安全的 Go HTTP 请求
- 《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
- VUE|vue项目中 localStorage 的用法建议
- Kubernetes 集群中 Ingress 故障的根因诊断