mongodb指南(翻译)(五) developer zone 连接

Mongodb是一个数据库服务器:它运行在前台或者后台,等待来自用户的连接。当你启动mongodb,你会看到类似于下面的内容:

~/$ ./mongod
#
# some logging output
#
Tue Mar 9 11:15:43 waiting for connections on port 27017
Tue Mar 9 11:15:43 web admin interface listening on port 28017

此时它会停止打印输出但是并没有冻结,它只是监听在端口27017等待连接。一旦你连接并开始发送命令,它会继续输出所作事情的log。你可以使用任何一个mongodb驱动或者mongo shell去连接到数据库。

你不能通过在网页浏览器上输入http://localhost:27017来连接到mongodb。数据库不能在端口27017上面使用HTTP访问。

标准的连接字符串格式

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 必选的前缀,用来标示这是一个标准连接格式的字符串
  • username:password@ 可选的。如果有,驱动在连接到数据库服务器后会尝试登录到一个数据库。
  • host1 URL的必选部分。它标示了要连接的服务器地址。
  • :portX 是可选的。如果没有提供默认连接到:27017.
  • /database 要登录的数据库的名称,只有username:password@语法使用后它才有用。如果没有提供,默认使用“admin”。
  • ?options 是连接的可选项。注意如果database没有提供,在最后一个主机和?符号中间依然需要一个斜杠"/"。可选项是名称=值的配对,他们使用"&"或者";"隔开。

很多主机可能需要指定(连接到复制对/组)。

这些可选项是:

复制组:

  • replicaSet=name
    • 驱动会检查连接到的复制组和这个名称是否匹配。意味着如果给出的主机是种子列表,驱动会尝试找到复制组内所有成员。

 单台服务器:

  • slaveOk=true|false

任何配置下:

  • safe=true|false
    • true:驱动在执行更新操作后会发送一个getLastError命令确保更新成功(同时查看一下w和wtimeoutMS)。
    • false:驱动在每次更新操作后不会发送getLastError命令。
  • w=n
    • 驱动在getLastError命令中增加{w:n}。意味着safe=true.
  • wtimeoutMS=ms
    • 驱动在getLastError命令中增加{wtimeout:ms}。意味着safe=true.
  • fsync=true|false
    • true:驱动在getLastError命令中增加{fsync:true}。意味着safe=true.
    • false:驱动不在getLastError命令中增加同步参数。
  • journal=true|false
    • 同步到日志文件。意味着fase=true.
  • connectTimeoutMS=ms
    • 一个连接在超时之前可以保持打开的时间。
  • socketTimeoutMS=ms
    • 套接字上面的发送和接收操作的超时时间。

这些可选项对大小写不敏感。

一些例子

连接到运行在本机监听默认端口的数据库服务器:

mongodb://localhost

使用用户名“fred”和密码“foobar”连接并登陆到管理数据库:

mongodb://fred:foobar@localhost

使用用户名“fred”和密码“foobar”连接并登陆到“baz”数据库:

mongodb://fred:foobar@localhost/baz

连接到一个复制配对,其中一台服务器在example1.com另一台服务器在example2.com:

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

连接到一个复制组,三台服务器运行在本地(端口为27017,27018,27019):

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

连接到一个三台服务器组成的复制组,将所有写操作发送给主节点,分发所有读操作到从节点:

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

使用安全模式连接到本机:

mongodb://localhost/?safe=true

使用安全模式连接到复制组,等待复制操作至少在2台机器完成,2秒超时:

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

连接池
服务器会为每一个TCP连接启动一个线程,强烈推荐你的应用程序使用某种类型的连接池。幸运的是,大部分驱动的都为你实现了这个功能。当你的应用程序为每个请求启动一个进程时,驱动会抛出一个重要的异常,比如在CGI和一些PHP的配置中。






      

https://github.com/tomliugen
原文地址:https://www.cnblogs.com/xinghebuluo/p/2267366.html