文章永久连接:https://tech.souyunku.com/?p=3647
MongoDB 连接语法使用标准的 URI 语法格式
启动 MongoDB 服务
经过前面的几章学习,我们知道如何 如何启动 MongoDB 服务
只需要在 MongoDB 安装目录的 bin 目录下执行 mongod 即可
执行启动操作后,mongodb 会输出一些必要信息后,然后等待客户端连接的建立,当连接被建立后,就会开始打印日志信息
MongoDB 客户端
我们可以使用 MongoDB 自带的 shell 客户端 mongo 连接 MongoDB 服务
我们也可以使用使用 PHP 来连接 MongoDB
本教程我们会使用 mongo 来连接 Mongodb 服务
标准 URI 连接语法
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
选项说明
选项 | 说明 |
---|---|
mongodb:// | 这是固定的格式,必须要指定 |
username:password@ | 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库 |
host1 | 必须的指定至少一个host host1 是这个URI唯一要填写的,它指定了要连接服务器的地址 如果要连接集群,请指定多个主机地址 |
portX | 可选的指定端口,如果不填,默认为27017 |
/database | 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库 |
?options | 是连接选项。如果不使用/database,则前面需要加上/ 所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开 |
options 可以包括以下选项
选项 | 描述 |
---|---|
replicaSet=name | 验证replica set的名称,Impliesconnect=replicaSet. |
slaveOk=true|false | true:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器
false: 在 connect=direct模式下,驱动会自动找寻主服务器. 在connect=replicaSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。 |
safe=true|false | true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS)
false: 在每次更新之后,驱动不会发送getLastError来确保更新成功 |
w=n | 驱动添加 |
wtimeoutMS=ms | 驱动添加 |
fsync=true|false | true: 驱动添加 |
journal=true|false | 如果设置为 true, 同步到 journal (在提交到数据库前写入到实体中). 应用于 safe=true |
connectTimeoutMS=ms | 可以打开连接的时间 |
socketTimeoutMS=ms | 发送和接受sockets的时间 |
范例
1、 连接到本地使用默认端口启动的 MongoDB 服务
mongodb://localhost
2、 通过 shell 连接 MongoDB 服务
$ mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
这时候返回查看运行 **./mongod** 命令的窗口 可以看到是从哪里连接到 MongoDB 的服务器,输出如下信息
2017-10-23T17:22:27.336+0800 I CONTROL [initandlisten] allocator: tcmalloc
2017-10-23T17:22:27.336+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "/data/db" } }
2017-10-23T17:22:27.350+0800 I NETWORK [initandlisten] waiting for connections on port 27017
2017-10-23T17:22:36.012+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open)
# 上面该行表明一个来自本机的连接
……省略信息……
MongoDB 连接语法格式
使用用户名和密码连接到 MongoDB 服务器,必须使用以下连接语法
username:password@hostname:port/dbname
- username 为用户名
- password 为密码
- hostname 为 IP 地址
- port 为端口号,如果省略,默认为 27017
- dbname 为数据库,如果省略,默认连接到 admin
范例
1、 使用用户名和密码连接登陆到默认数据库
$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
2、 使用用户名 penglei 和密码 123456 连接到本地的 MongoDB 服务上
mongodb://admin:123456@localhost/
3、 使用用户名和密码连接登陆到指定数据库
mongodb://admin:123456@localhost/test
更多连接范例
1、 连接本地数据库服务器,端口使用默认的
mongodb://localhost
2、 使用用户名 penglei,密码 123abc321 登录 localhost 的 admin 数据库
mongodb://penglei:123abc321@localhost
3、 使用用户名 penglei,密码 123abc32q 登录 localhost 的 souyunku 数据库
mongodb://penglei:123abc321@localhost/souyunku
4、 连接到 MongoDB 集群, 服务器 1为 db1.souyunku.cn 服务器2 为 db2.souyunku.cn
mongodb://db1.souyunku.cn:27017,db2.souyunku.cn:27017
5、 连接到本地集群,三台服务器端口为 27017, 27018, 27019
mongodb://localhost,localhost:27018,localhost:27019
6、 连接集群三台服务器 host1, host2, host3 , 写入操作应用在主服务器 并且分布查询到从服务器
mongodb://host1,host2,host3/?slaveOk=true
7、 直接连接第一个服务器,无论是它是一部分或者主服务器或者从服务器
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
当连接服务器有优先级,还需要列出所有服务器,可以使用上述连接方式
8、 安全模式连接到 localhost
mongodb://localhost/?safe=true
9、 以安全模式连接到集群,并且等待至少两个复制服务器成功写入,超时时间设置为 2 秒
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
干货推荐
附录:MongoDB 教程:系列文章
- 一、MongoDB 基础教程
- 二、NoSQL 简介
- 三、什么是 MongoDB ?
- 四、Windows 平台安装 MongoDB
- 五、Linux 平台安装 MongoDB
- 六、Mac OSX 平台安装 MongoDB
- 七、MongoDB 术语
- 【当前读到】八、MongoDB -连接
- 九、MongoDB 创建数据库
- 十、MongoDB 切换数据库
- 十一、MongoDB 删除数据库
- 十二、MongoDB 备份数据( mongodump )
- 十三、MongoDB 插入文档
- 十四、MongoDB 更新文档
- 十五、MongoDB 删除文档
- 十六、MongoDB 删除集合
- 十七、MongoDB 查询文档
- 十八、MongoDB 条件操作符
- 十九、MongoDB $type操作符
- 二十、MongoDB 限制条数 (limit 方法)
- 二十一、MongoDB 跳过 (skip 方法)
- 二十二、MongoDB 排序
- 二十三、MongoDB 索引
- 二十四、MongoDB 聚合运算( aggregate )
- 二十五、MongoDB 聚合运算 – 管道
- 二十六、MongoDB 副本集群复制
- 二十七、MongoDB 分片集群技术
- 二十八、MongoDB 备份数据( mongodump )
- 二十九、MongoDB 恢复数据( mongorestore )
- 三十、MongoDB 性能跟踪 ( mongotop )
- 三十一、MongoDB 状态检测 ( mongostat )
- 三十二、MongoDB Java
- 三十三、MongoDB PHP 扩展
- 三十四、MongoDB PHP
- 三十五、PHP7 MongDB 扩展安装与使用
- 三十六、MongoDB 关系
- 三十七、MongoDB 数据库引用
- 三十八、MongoDB 覆盖索引查询
- 三十九、MongoDB 查询分析
- 四十、MongoDB 原子操作
- 四十一、MongoDB 高级索引
- 四十二、MongoDB 索引限制
- 四十三、MongoDB ObjectId
- 四十四、MongoDB Map Reduce
- 四十五、MongoDB 全文检索
- 四十六、MongoDB 正则表达式
- 四十七、MongoDB 管理工具: Rockmongo
- 四十八、MongoDB GridFS
- 四十九、MongoDB 固定集合(Capped Collections)
- 五十、MongoDB 自增 ID