• 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
  • 相关阅读:
    201141 live the lie until the lie becomes your life
    my php & mysql FAQ
    suger日料财务
    python 应用thrift thrift的监控fb303
    cherryPy学习
    my linux FAQ
    Javascript无阻塞加载方法
    设计模式学习笔记之组合模式模式
    【转】cookie
    C# 多线程
  • 原文地址:https://www.cnblogs.com/xinghebuluo/p/2267366.html
Copyright © 2020-2023  润新知