发表于 2015-7-9 08:33:40

mongodb指南(翻译)(五)

  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://host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[?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的配置中。




  
页: [1]
查看完整版本: mongodb指南(翻译)(五)