MongoDB连接数据库
在连接 MongoDB 之前,我们需要先启动 MongoDB,启动 MongoDB 的方式非常简单,您只需要在 MongoDB 安装目录下的 bin 目录中执行
mongo
命令即可。mongoDB 启动成功后会输出一些必要信息,然后等待建立连接,当连接成功后,则会打印一些日志信息,如下所示:
>mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("8e39fa3e-030f-419c-a84c-2969db730b90") }
MongoDB server version: 4.0.10
Server has startup warnings:
2021-02-05T11:22:11.458+0800 I CONTROL [initandlisten]
2021-02-05T11:22:11.458+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-02-05T11:22:11.458+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2021-02-05T11:22:11.458+0800 I CONTROL [initandlisten]
---
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()
---
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
语法说明如下:- mongodb://:这是固定的格式,必须要指定;
- username:password@:可选项,如果设置,在连接数据库服务器之后,驱动会尝试以给出的用户名(username)和密码(password)登录这个数据库;
- host1:必填参数,用来指定要连接服务器的地址,如果要连接复制集,则需要指定多个主机地址;
- portX:可选项,用来指定端口,如果不填,默认为 27017;
- /database:可选项,如果指定了 username:password@,则连接并验证登录指定的数据库,若不指定,则默认打开 test 数据库;
- ?options:可选项,用来定义连接选项,连接选项的可选值如下表所示,如果不使用 /database,则前面需要使用
/
与前面的内容分隔,所有连接选项都是键值对 name=value 的形式,键值对之间通过&
或;
(分号)隔开。
选项 | 描述 |
---|---|
connect=direct | replicaset |
|
replicaSet=name | 验证建立连接的 replica set 的名称,应用于 connect=replicaSet。 |
slaveOk=true | false |
|
safe=true | false |
|
w=n | w 代表 server 的数量(应用于 safe=true):
|
wtimeoutMS=ms | 设置写操作的超时事件,应用于 safe=true。 |
fsync=true | false |
设置是否等待刷新数据到磁盘,应用于 safe=true。
|
journal=true | false | 如果设置为 true,则等待数据写入到日志并刷新到磁盘,应用于 safe=true。 |
connectTimeoutMS=ms | 可以打开连接的时间。 |
socketTimeoutMS=ms | 发送和接受 sockets 的时间。 |
下面通过一些简单的示例来演示一下:
连接到一个运行在本机的,端口为 27017 的 MongoDB:
mongodb://localhost
连接到一个运行在本机的,端口为 27017 的 MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将默认使用 admin 数据库:mongodb://fred:foobar@localhost
连接到一个运行在本机的,端口为 27017 的 MongoDB,并以用户名"fred"和密码"foobar"登录,登录后使用 baz 数据库:mongodb://fred:foobar@localhost/baz
连接到一个 replica pair,一台服务器在 www.xnip.cn,另一台在 www.xnip.cn:mongodb://www.xnip.cn:27017,www.xnip.cn:27017
连接到本机的一个 replica set,端口分别为 27017、27018、27019:mongodb://localhost,localhost:27018,localhost:27019
连接 replica set 中的三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器:mongodb://host1,host2,host3/?slaveOk=true
直接连接第一个服务器,无论该服务器是否为 replica set 的一部分,也无论它是主服务器还是从服务器:mongodb://host1,host2,host3/?connect=direct;slaveOk=true
注意:上述的连接主要用于在您偏好使用某台服务器,但又有可供替换的服务器时。
使用安全模式连接到 localhost:mongodb://localhost/?safe=true
以安全模式连接到 replica set,并且等待至少两个复制服务器成功写入,超时时间设置为 2 秒:mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000