类:Mongo::URI

继承:
对象
  • 对象
显示全部
包括:
Address::Validator , Loggable
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/uri.rb ,
build/Ruby-driver-v 2.19 /lib/mongo/uri/srv_protocol.rb,
build/Ruby-driver-v 2.19 /lib/mongo/uri/options_mapper.rb

Overview

URI 类为用户提供了一种解析连接MongoDB string格式规范中定义的 uri 的方法。

www.mongodb.com/zh-cn/docs/manual/reference/connection-string/

例子:

使用 uri string建立客户端连接。

uri = Mongo::URI.new('mongodb://localhost:27017')
client = Mongo::Client.new(uri.servers, uri.options)
client.(uri.credentials)
client[uri.database]

由于:

  • 2.0.0

直接已知子类

SRVProtocol

在命名空间下定义

类: OptionsMapper , SRVProtocol

常量摘要折叠

SCHEME =
已弃用。

将在3.0中删除。

MongoDB连接string模式。

由于:

  • 2.0.0

' MongoDB :// '.冻结
MONGODB_SCHEME =

MongoDB连接string方案根。

由于:

  • 2.5.0

'mongodb'.冻结
MONGODB_SRV_SCHEME =

MongoDB srv 协议连接string方案根。

由于:

  • 2.5.0

' mongodb+srv '.冻结
INVALID_SCHEME =
已弃用。

无效方案的错误详细信息。

由于:

  • 2.1.0

"无效的方案。方案必须是 ' #{ MONGODB_SCHEME } ' 或 ' #{ MONGODB_SRV_SCHEME } ' ".冻结
FORMAT =

MongoDB URI 格式规范。

由于:

  • 2.0.0

' MongoDB ://[username:password@]host1[:port1][,host2[:port2] ' +
' ,...[,hostN[:portN]]][/[database][?options]] '.冻结
帮助 =

MongoDB URI(连接string )文档URL

由于:

  • 2.0.0

' https://www.mongodb.com/zh-cn/docs/manual/reference/connection-string/ '.冻结
不安全 =

必须进行 urlencoded 的不安全字符。

由于:

  • 2.1.0

/[\:\/\@]/
PERCENT_CHAR =

必须在用户信用中编码的百分号。

由于:

  • 2.5.1

/\%/
UNIX_SOCKET =

Unix 套接字后缀。

由于:

  • 2.1.0

/.sock/
HOST_DELIM =

分隔主机的字符。

由于:

  • 2.1.0

' , '.冻结
HOST_PORT_DELIM =

分隔主机和端口的字符。

由于:

  • 2.1.0

' : '.冻结
DATABASE_DELIM =

分隔数据库的字符。

由于:

  • 2.1.0

' / '.冻结
URI_OPTS_DELIM =

字符分隔选项。

由于:

  • 2.1.0

' ? '.冻结
INDIV_URI_OPTS_DELIM =
已弃用。

分隔多个选项的字符。

由于:

  • 2.1.0

' & '.冻结
URI_OPTS_VALUE_DELIM =

分隔选项及其值的字符。

由于:

  • 2.1.0

' = '.冻结
AUTH_USER_PWD_DELIM =

分隔用户名和密码的字符。

由于:

  • 2.1.0

' : '.冻结
AUTH_DELIM =

分隔身份验证档案的字符。

由于:

  • 2.1.0

' @ '.冻结
SCHEME_DELIM =

模式分隔符。

由于:

  • 2.5.0

' :// '.冻结
INVALID_OPTS_VALUE_DELIM =

无效选项格式的错误详细信息。

由于:

  • 2.1.0

"选项及其值必须分隔" +
" by ' #{ URI_OPTS_VALUE_DELIM } ' ".冻结
UNESCAPED_USER_PWD =

非 urlencoded 用户名或密码的错误详细信息。

由于:

  • 2.1.0

"用户名和密码必须进行 urlencoded。 ".冻结
UNESCAPED_UNIX_SOCKET =

非 urlencoded unix 套接字路径的错误详细信息。

由于:

  • 2.1.0

" UNIX 域套接字必须进行 urlencoded。 ".冻结
UNESCAPED_DATABASE =

非 urlencoded 身份验证数据库名称的错误详细信息。

由于:

  • 2.1.0

"身份验证数据库必须进行 urlencoded。 ".冻结
INVALID_OPTS_DELIM =

提供不带数据库分隔符的选项的错误详细信息。

由于:

  • 2.1.0

" 如果指定了选项,则必须存在 数据库分隔符 ' #{ DATABASE_DELIM } '。 ".冻结
INVALID_HOST =

缺少主机的错误详细信息。

由于:

  • 2.1.0

"缺少主机;必须提供至少一个主机。 ".冻结
INVALID_PORT =

无效端口的错误详细信息。

由于:

  • 2.1.0

端口无效。端口必须是大于0且小于65536的整数.冻结
READ_MODE_MAP =

URI 读取偏好模式到 Ruby 驱动程序读取偏好模式的映射

由于:

  • 2.0.0

{
  ' primary '            => :primary,
  ' primarypreferred '   => :primary_preferred,
  ' secondary '          => :secondary,
  ' secondarypreferred ' => :secondary_preferred,
  ' nearest '            => :nearest
}.冻结
AUTH_MECH_MAP =

URI 身份验证机制到 Ruby 驱动程序机制的映射

由于:

  • 2.0.0

{
  ' GSSAPI '       => :gssapi,
  ' MONGODB-AWS '  => :aws,
  # MONGODB-CR 已弃用,并将在驱动程序版本3.0中删除
  'MONGODB-CR'   => :mongodb_cr,
  ' MONGODB-X 509 ' => :mongodb_x 509,
  ' PLAIN '        => :plain,
  ' SCRAM-SHA- 1 '  => :scram,
  ' SCRAM-SHA- 256 ' => :scram 256,
}.冻结
REPEATABLE_OPTIONS =

允许在 uri 中多次出现的选项。

为了遵循 URI 选项规范要求“tls”和“ssl”的所有实例都具有相同的值,我们需要跟踪为这些选项传入的所有值。 假设它们不冲突,它们将在解析 URI 后立即压缩为单个值。

由于:

  • 2.1.0

[ :tag_sets, :ssl ]

Loggable中包含的常量

Loggable::PREFIX

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

Address::Validator中包含的方法

#validate_address_str!

Loggable中包含的方法

#log_debug#log_error#log_ Fatal#log_info#log_warn#logger

构造函数详情

#initialize (string, options = {}) ⇒ URI

从提供的string创建新的 uri。

例子:

创建新的 URI。

URI.new('mongodb://localhost:27017')

参数:

  • 字符串 ( string )

    要解析的 URI。

  • 选项 哈希 (默认为: {}

    选项。

选项哈希 ( options ):

  • :logger 记录器

    要使用的自定义记录器。

引发:

由于:

  • 2.0.0



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第284行

def 初始化(字符串, 选项 = {})
  除非 字符串
    提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ')
  end
  if 字符串.空?
    提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ')
  end

  @string = 字符串
  @options = 选项
  parsed_scheme, _, 剩余 = 字符串.分区(SCHEME_DELIM)
  除非 parsed_scheme == 有关
    Raise_invalid_error!("无效的模式 ' #{ parsed_scheme } '。模式必须是 ' #{ MONGODB_SCHEME } '。使用 URI#get 解析 SRV URI。 ")
  end
  if 剩余.空?
    Raise_invalid_error!(' URI 中没有主机')
  end
  parse!(剩余)
  validate_uri_options!
end

实例属性详细信息

# options对象(只读)

uri 解析器对象选项。

由于:

  • 2.0.0



39
40
41
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第39行

def 选项
  @options
end

#servers对象(只读)

uri 中指定的服务器。

由于:

  • 2.0.0



49
50
51
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第49行

def 服务器
  @servers
end

# uri_options对象(只读)

Mongo::Options::Redacted 列出了 uri 中指定的选项。

由于:

  • 2.1.0



44
45
46
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第44行

def uri_options
  @uri_options
end

类方法详细信息

get (string, opts = {}) ⇒ URI , URI::SRVProtocol

获取 URI 对象或 SRVProtocol URI 对象。

例子:

获取 uri 对象。

URI.get(string)

参数:

  • 字符串 ( string )

    要解析的 URI。

  • opts 哈希 (默认为: {}

    选项。

  • 选项 (哈希)

    一组可自定义的选项

返回:

由于:

  • 2.5.0



230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第230行

def self.获取(字符串, opts = {})
  除非 字符串
    提高 错误::InvalidURI.new(字符串, ' URI 必须是string ,而不是 nil。 ')
  end
  if 字符串.空?
    提高 错误::InvalidURI.new(字符串, '无法解析空 URI。 ')
  end

  有关, _, _ = 字符串.分区(SCHEME_DELIM)
  案例 有关
    when MONGODB_SCHEME
      URI.new(字符串, opts)
    when MONGODB_SRV_SCHEME
      SRVProtocol.new(字符串, opts)
    else
      提高 错误::InvalidURI.new(字符串, " 无效方案 ' # { { schema } } '。方案必须是 ' #{ MONGODB_SCHEME } ' 或 ' #{ MONGODB_SRV_SCHEME } ' ")
  end
end

实例方法详细信息

# client_optionsMongo::Options::Redacted

获取在实例化时需要传递给 Mongo::Client 的选项哈希,因此我们不必在此时合并凭证和数据库 - 这里只有一个点。

例子:

获取客户端选项。

uri.client_options

返回:

由于:

  • 2.0.0



259
260
261
262
263
264
265
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第259行

def client_options
  opts = uri_options.点击 do |opts|
    opts[:database] = @database if @database
  end

  @user ? opts.合并(merge)(凭证) : opts
end

#凭证哈希

获取 URI 中提供的档案。

例子:

获取凭证。

uri.credentials

返回:

  • (哈希)

    凭证。

    • :user [ string ] 用户。

    • :password [ string ] 提供的密码。

由于:

  • 2.0.0



315
316
317
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第315行

def 凭证
  { : user => @user, :password => @password }
end

#数据库string

获取 URI 中提供的数据库。

例子:

获取数据库。

uri.database

返回:

  • ( string )

    数据库。

由于:

  • 2.0.0



327
328
329
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第327行

def database
  @database ? @database : Database::ADMIN
end

# srv_records对象

由于:

  • 2.0.0



267
268
269
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第267行

def srv_records
  nil
end

# to_sstring

获取string形式的 uri。

例子:

获取string形式的 uri。

uri.to_s

返回:

  • ( string )

    uri string 。

由于:

  • 2.0.0



337
338
339
# File 'build/Ruby-driver-v 2.19 /lib/mongo/uri.rb', 第337行

def to_s
  reconstruct_uri
end