第8章 MongoDB - 连接教程

第8章 MongoDB - 连接教程

在本教程咱们将讨论 MongoDB 的不同连接方式。

启动 MongoDB 服务

在前面的教程中,咱们已经讨论了如何启动 MongoDB 服务,帅哥只需要在 MongoDB install 目录的 bin 目录下执行 mongodb 即可。

执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。

帅哥可以使用 MongoDB shell 来连接 MongoDB server 。帅哥也可以使用 PHP 来连接 MongoDB。本教程咱们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节咱们将会介绍如何通过php 来连接MongoDB服务。

标准 URI 连接语法:


    mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

  • mongodb:// 这是固定的格式,必须要指定。
  • username:password@ 非必输项,如果设置,在连接databaseserver 之后,驱动都会尝试登录这个database
  • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接server 的地址。如果要连接复制集,请指定多个主机地址。
  • portX 非必输的指定端口,如果不填,默认为27017
  • /database 如果指定username:password@,连接并验证登录指定database。若不指定,默认打开 test database。
  • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

标准的连接格式包含了多个选项(options),请在输出结果查看

选项描述
replicaSet=name验证replica set的名称。 Impliesconnect=replicaSet.
slaveOk=true|false
  • true:在connect=direct模式下,驱动会连接第一台机器,即使这台server 不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从server 。
  • false: 在 connect=direct模式下,驱动会自动找寻主server . 在connect=replicaSet 模式下,驱动仅仅连接主server ,并且所有的读写命令都连接到主server 。
safe=true|false
    • true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).
false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。
w=n驱动添加 { w : n } 到getLastError命令. 应用于safe=true。
wtimeoutMS=ms驱动添加 { wtimeout : ms } 到 getlasterror 命令. 应用于 safe=true.
fsync=true|false
  • true: 驱动添加 { fsync : true } 到 getlasterror 命令.应用于 safe=true.
  • false: 驱动不会添加到getLastError命令中。
journal=true|false如果设置为 true, 同步到 journal (在提交到database前写入到实体中). 应用于 safe=true
connectTimeoutMS=ms可以打开连接的时间。
socketTimeoutMS=ms发送和接受sockets的时间。

实例

使用默认端口来连接 MongoDB 的服务。


    mongodb://localhost

通过 shell 连接 MongoDB 服务:


    $ ./mongo
    MongoDB shell version: 4.0.9
    connecting to: test
    ...

这时候帅哥return 查看运行 ./mongod 命令的窗口,可以看到是从哪里连接到MongoDB的server ,可以看到如下信息:


    ……省略信息……
    2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] allocator: tcmalloc
    2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/data/db" } }
    2015-09-25T17:22:27.350+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
    2015-09-25T17:22:36.012+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open)  # 该行表明一个来自本机的连接
    
    ……省略信息……


MongoDB 连接命令格式

使用用户名和password 连接到 MongoDB server ,帅哥必须使用 ‘username:password@hostname/dbname’ 格式,'username’为用户名,‘password’ 为password 。

使用用户名和password 连接登录到默认database:


    $ ./mongo
    MongoDB shell version: 4.0.9
    connecting to: test

使用用户 admin 使用password 123456 连接到本地的 MongoDB 服务上。输出结果请在输出结果查看


    > mongodb://admin:123456@localhost/
    ...

使用用户名和password 连接登录到指定database,格式如下:


    mongodb://admin:123456@localhost/test

更多连接实例

连接本地databaseserver ,端口是默认的。


    mongodb://localhost

使用用户名fred,password foobar登录localhost的admindatabase。


    mongodb://fred:foobar@localhost

使用用户名fred,password foobar登录localhost的bazdatabase。


    mongodb://fred:foobar@localhost/baz

连接 replica pair, server 1为example1.netserver 2为example2。


    mongodb://example1.net:27017,example2.net:27017

连接 replica set 三台server (端口 27017, 27018, 和27019):


    mongodb://localhost,localhost:27018,localhost:27019

连接 replica set 三台server , 写入操作应用在主server 并且分布查询到从server 。


    mongodb://host1,host2,host3/?slaveOk=true

直接连接第一个server ,无论是replica set一部分或者主server 或者从server 。


    mongodb://host1,host2,host3/?connect=direct;slaveOk=true

当帅哥的连接server 有优先级,还需要列出所有server ,帅哥可以使用上述连接方式。

安全模式连接到localhost:


    mongodb://localhost/?safe=true

以安全模式连接到replica set,并且等待至少两个复制server 成功写入,超时时间设置为2秒。


    mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 MongoDB Java教程第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 也许有些只有自己的心是清晰可见的,无人可以诉说,也只有用日记,记录着旅行的意义,用时光燃烧着昔日的爱情。
  • 要想有教养,“就要去了解全世界在谈论和思索的最美好的东西”。
  • 社会事业的不易完成,它的症结所在,不在施行小惠,而在恢复民众的权利。一个人的责任并不在于默然的去工作,而是在公然的铲除罪恶,力谋补救。
  • 空间如同容器,每个空间自然存放不同的物质。然而时间久了,也会因为各式各样的因素而产生裂缝。裂痕并不难处理。然而因为各个容器内的物质不一样,通过裂缝所渗漏的物质,会使一些原本平衡的事物产生变化。所以,才有了不一样的存在。
  • 最深最和平的快乐,就是静观土地与人世,慢慢品位出它的美与和谐。这份快乐,乍一看也许平淡无奇,事实上,它深远而悠长。在我,生命的享受就在其中了。让那永不醒觉的人自生自灭好了,如果他们抱怨,我们把耳朵塞起来。因为,他们不肯对人生对世界,对生命,有一丝一毫感激的心。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值