类:Mongo::Index::View

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
包括:
Enumerable、Cursor::NonTailable、CursorHost、Retryable
定义于:
lib/ Mongo/ 索引/view.rb

Overview

表示索引视图的类。

由于:

  • 2.0.0

常量摘要折叠

KEY =

索引键字段。

由于:

  • 2.0.0

'key'.冻结
NAME =

索引名称字段。

由于:

  • 2.0.0

' name '.冻结
OPTIONS =

Ruby 索引选项到服务器选项的映射。

由于:

  • 2.0.0

{
  :背景 => :背景,
  :bits => :bits,
  :bucket_size => :bucketSize,
  :default_ language => :default_ language,
  :expire_after => :expireAfterSeconds,
  :expire_after_seconds => :expireAfterSeconds,
  :key => :key,
  : language_override => : language_override,
  :max => :max,
  :min => :min,
  :name => :name,
  :partial_filter_expression => :partialFilterExpression,
  :sparse => :sparse,
  :sphere_version => :'2dsphereIndexVersion',
  :storage_engine => :storageEngine,
  :text_version => :textIndexVersion,
  :unique => :unique,
  :version => :v,
  :weights => :weights,
  :collation => :collation,
  :comment => :comment,
  :wildcard_projection => :wildcardProjection,
}.冻结

实例属性摘要折叠

CursorHost 包含的属性

#cursor, #timeout_mode

实例方法摘要折叠

Cursor::NonTailable 中包含的方法

#cursor_type, #timeout_mode

CursorHost 包含的方法

#validate_timeout_mode!

Retryable 中包含的方法

#read_worker#select_server#write_worker

构造函数详情

#initialize (集合, options = {}) ⇒查看

创建新的索引视图。

例子:

创建新的索引视图。

View::Index.new(collection)

参数:

  • 集合 ( Collection )

    集合。

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

    用于获取索引列表的选项。

选项哈希 ( options ):

  • :batch_size 整数

    listIndexes 命令返回结果的批处理大小。

  • :timeout_mode ( :cursor_lifetime | :iteration )

    如何解释 :timeout_ms(是应用于游标的生命周期,还是每次迭代)。

  • :timeout_ms 整数

    操作超时(以毫秒为单位)。 必须是非负整数。 0 的显式值表示无限。 未设置默认值,这意味着该值是从集合、数据库或客户端继承的。

由于:

  • 2.0.0

[查看源代码]

318
319
320
321
322
323
324
325
326
# File 'lib/ Mongo/ 索引/view.rb', 第 318 行

def 初始化(集合, 选项 = {})
  @collection = 集合
  @operation_timeout_ms = 选项.删除(:timeout_ms)

  validate_timeout_mode!(选项)

  @batch_size = 选项[:batch_size]
  @options = 选项
end

实例属性详细信息

# batch_size整数(只读)

返回 batch_size 发送 listIndexes 命令时结果批处理的大小。

返回:

  • ( Integer )

    batch_size 发送 listIndexes 命令时结果批处理的大小。

由于:

  • 2.0.0


38
39
40
# File 'lib/ Mongo/ 索引/view.rb', 第 38 行

def batch_size
  @batch_size
end

# collection =" Collection " (只读)

返回集合索引集合。

返回:

由于:

  • 2.0.0


34
35
36
# File 'lib/ Mongo/ 索引/view.rb', 第 34 行

def 集合
  @collection
end

# operation_timeout_ms Integer | nil |作为选项传递给视图的 timeout_ms 值。(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回整数 | nil |作为选项传递给视图的 timeout_ms 值。

返回:

  • (Integer | nil | 作为选项传递给视图的 timeout_ms 值。)

    整数 | nil |作为选项传递给视图的 timeout_ms 值。

由于:

  • 2.0.0


44
45
46
# File 'lib/ Mongo/ 索引/view.rb', 第 44 行

def operation_timeout_ms
  @operation_timeout_ms
end

实例方法详细信息

# create_many (*models) ⇒结果

注意:

在MongoDB 3.0.0及更高版本上,将在服务器上并行创建索引。

在集合上创建多个索引。

例子:

创建多个索引。

view.create_many([
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true }
])

使用选项创建多个索引。

view.create_many(
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true },
  { commit_quorum: 'majority' }
)

参数:

  • 模型 ( Array<Hash> )

    索引规范。 每个模型必须包含一个 :key 选项,数组中的最后一项除外,它可能是指定与 createIndexes 操作相关选项的哈希。 接受以下选项:

    • commit_quorum:指定在主节点 (primary node in the replica set)节点将索引标记为就绪之前,副本集的多少个承载数据的节点(包括主节点 (primary node in the replica set)节点)必须成功完成索引构建。 潜在值为:

      • 从0到副本集点数的整数

      • “majority” 表示大多数数据承载节点必须投票

      • “votingMembers” 表示所有承载投票数据的节点必须投票

    • session:要使用的会话。

    • comment:用户提供的要附加到此命令的注释。

返回:

  • (结果)

    命令的结果。

由于:

  • 2.0.0

[查看源代码]

216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/ Mongo/ 索引/view.rb', 第 216 行

def create_many(*模型)
  模型 = 模型.展平
  选项 = {}
  if 模型 && !模型.last.键?(:key)
    选项 = 模型.Pop
  end

  客户端.with_session(@options.合并(merge)(选项)) do |会话|
    server = next_primary(nil, 会话)

    索引 = normalize_models(模型, server)
    索引. do |索引(index)|
      if 索引(index)[:bucketSize] || 索引(index)[' bucketSize ']
        客户端.log_warn(从 MongoDB 4.4开始,Haystack 索引(bucketSize 索引选项)已弃用)
      end
    end

    spec = {
      索引: 索引,
      db_name: database.名称,
      coll_name: 集合.名称,
      会话: 会话,
      commit_quorum: 选项[:commit_quorum],
      write_concern: write_concern,
      comment: 选项[:comment],
    }
    上下文 = 操作::上下文.new(
      客户端: 客户端,
      会话: 会话,
      operation_timeups: operation_timeups(选项)
    )
    操作::创建索引.new(spec).执行(server, 上下文: 上下文)
  end
end

# create_one (keys, options = {}) ⇒结果

注意:

请注意,列出的选项可能是可用选项的子集。

在集合上创建索引。

有关服务器版本支持的选项的完整列表,请参阅MongoDB文档。

例子:

在集合上创建唯一索引。

view.create_one({ name: 1 }, { unique: true })

参数:

  • 密钥 (哈希)

    字段名称/方向对的哈希值。

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

    此索引的选项。

选项哈希 ( options ):

  • :unique ( true , false ) —默认: false

    如果为 true,则该索引将对该字段实施唯一性约束。

  • :背景 ( true , false ) —默认: false

    如果为 true,则将在后台构建索引(仅适用于服务器版本> = 1.3.2 )

  • :drop_dups ( true , false ) —默认: false

    如果在此集合上创建唯一索引,该选项将保留数据库索引的第一个文档,并删除在此字段上具有重复值的所有后续文档。

  • :bucket_size 整数 — default: nil

    与 geoHaystack 索引一起使用。 在给定经度和纬度一定距离内群组的文档数量。

  • :max 整数 — default: nil

    指定地理索引的最大纬度和经度。

  • :min 整数 — default: nil

    指定地理索引的最小纬度和经度。

  • :partial_filter_expression 哈希

    为部分索引指定过滤。

  • :hidden 布尔值

    当 :hidden 为 true 时,此索引将存在于集合中,但查询规划器在执行操作时不会使用。

  • :commit_quorum ( string | Integer )

    指定在主节点 (primary node in the replica set)节点将索引标记为就绪之前,副本集的承载数据的节点数量(包括主节点 (primary node in the replica set))必须成功完成索引构建。 潜在值为:

    • 从0到副本集点数的整数

    • “majority” 表示大多数数据承载节点必须投票

    • “votingMembers” 表示所有承载投票数据的节点必须投票

  • :session 会话

    用于操作的会话。

  • :comment 对象

    用户提供的待附加到该命令的注释。

返回:

  • (结果)

    响应。

由于:

  • 2.0.0

[查看源代码]

167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/ Mongo/ 索引/view.rb', 第 167 行

def create_one(密钥, 选项 = {})
  选项 = 选项.dup

  create_options = {}
  if 会话 = @options[:session]
    create_options[:session] = 会话
  end
  %i(commit_quorum 会话 comment timeout_ms max_time_ms). do |key|
    if  = 选项.删除(key)
      create_options[key] = 
    end
  end
  create_many({ 键: 密钥 }.合并(merge)(选项), create_options)
end

# drop_all (options = {}) ⇒结果

删除集合上的所有索引。

例子:

删除集合上的所有索引。

view.drop_all

参数:

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

    此操作的选项。

选项哈希 ( options ):

  • :comment 对象

    用户提供的待附加到该命令的注释。

返回:

  • (结果)

    响应。

由于:

  • 2.0.0

[查看源代码]

119
120
121
# File 'lib/ Mongo/ 索引/view.rb', 第 119 行

def drop_all(选项 = {})
  drop_by_name(Index::所有, 选项)
end

# drop_one (name, options = {}) ⇒结果

按名称删除索引。

例子:

按名称删除索引。

view.drop_one('name_1')

参数:

  • 名称 ( string )

    索引的名称。

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

    此操作的选项。

选项哈希 ( options ):

  • :comment 对象

    用户提供的待附加到该命令的注释。

返回:

  • (结果)

    响应。

引发:

由于:

  • 2.0.0

[查看源代码]

101
102
103
104
# File 'lib/ Mongo/ 索引/view.rb', 第 101 行

def drop_one(名称, 选项 = {})
  提高 错误::MultiIndexDrop.new if 名称 == Index::所有
  drop_by_name(名称, 选项)
end

#each (&block) ⇒对象

遍历集合的所有索引。

例子:

获取所有索引。

view.each do |index|
  ...
end

由于:

  • 2.0.0

[查看源代码]

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# File 'lib/ Mongo/ 索引/view.rb', 第 279 行

def ()
  会话 = 客户端.get_session(@options)
  上下文 = 操作::上下文.new(
    客户端: 客户端,
    会话: 会话,
    operation_timeups: operation_timeups(@options)
  )

  cursor = read_with_retry_cursor(会话, ServerSelector.主节点, self, 上下文: 上下文) do |server|
    send_initial_query(server, 会话, 上下文)
  end
  if block_given?
    cursor. do |doc|
      产量 doc
    end
  else
    cursor.to_enum
  end
end

# get (keys_or_name) ⇒哈希

按特定名称或规范获取索引信息的便捷方法。

例子:

按名称获取索引信息。

view.get('name_1')

通过键获取索引信息。

view.get(name: 1)

参数:

  • keys_or_name (哈希, string )

    索引名称或规范。

返回:

  • (哈希)

    索引信息。

由于:

  • 2.0.0

[查看源代码]

265
266
267
268
269
# File 'lib/ Mongo/ 索引/view.rb', 第 265 行

def 获取(keys_or_name)
  find do |索引(index)|
    (索引(index)[名称] == keys_or_name) || (索引(index)[] == normalize_keys(keys_or_name))
  end
end

# operation_timeups (opts = {}) ⇒ 哈希

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回在操作级别(如果有)上设立的timeout_ms 值,和/或在集合/数据库/客户端级别上设立的timeout_ms(如果有)。

返回:

  • (哈希)

    在操作级别上设立的timeout_ms 值(如果有),和/或在集合/数据库/客户端级别上设立的timeout_ms(如果有)。

由于:

  • 2.0.0

[查看源代码]

340
341
342
343
344
345
346
347
348
# File 'lib/ Mongo/ 索引/view.rb', 第 340 行

def operation_timeups(opts = {})
  {}.点击 do |结果|
    if opts[:timeout_ms] || operation_timeout_ms
      结果[:operation_timeout_ms] = opts.删除(:timeout_ms) || operation_timeout_ms
    else
      结果[:inherited_timeout_ms] = 集合.timeout_ms
    end
  end
end

#timeout_msInteger | nil

用于此操作的 timeout_ms 值;指定为视图的选项,或从集合继承。

返回:

  • ( Integer | nil )

    此操作的 timeout_ms

由于:

  • 2.0.0

[查看源代码]

332
333
334
# File 'lib/ Mongo/ 索引/view.rb', 第 332 行

def timeout_ms
  operation_timeout_ms || 集合.timeout_ms
end