类:Mongo::Index::View

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
包括:
可枚举、可重试
定义于:
构建/ruby-driver-v2.19/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,
}.冻结

实例属性摘要折叠

实例方法摘要折叠

Retryable 中包含的方法

#read_worker#select_server#write_worker

构造函数详情

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

创建新的索引视图。

例子:

创建新的索引视图。

View::Index.new(collection)

参数:

  • 集合 ( Collection )

    集合。

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

    用于获取索引列表的选项。 仅当 listIndexes 命令与服务器版本 >= 2.8一起使用时才相关。

选项哈希 ( options ):

  • :batch_size 整数

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

由于:

  • 2.0.0



293
294
295
296
297
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 293

def 初始化(集合, 选项 = {})
  @collection = 集合
  @batch_size = 选项[:batch_size]
  @options = 选项
end

实例属性详细信息

# batch_size整数(只读)

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

返回:

  • ( Integer )

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

由于:

  • 2.0.0



34
35
36
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 34

def batch_size
  @batch_size
end

# collection =" Collection " (只读)

返回集合索引集合。

返回:

由于:

  • 2.0.0



30
31
32
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 30

def 集合
  @collection
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



206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 206

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(spec).执行(server, 上下文: 操作::上下文.new(客户端: 客户端, 会话: 会话))
  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



157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 157

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

  create_options = {}
  if 会话 = @options[:session]
    create_options[:session] = 会话
  end
  %i(commit_quorum 会话 comment). 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



109
110
111
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 109

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

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

按名称删除索引。

例子:

按名称删除索引。

view.drop_one('name_1')

参数:

  • 名称 ( string )

    索引的名称。

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

    此操作的选项。

选项哈希 ( options ):

  • :comment 对象

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

返回:

  • (结果)

    响应。

引发:

由于:

  • 2.0.0



91
92
93
94
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 91

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

#each (&block) ⇒对象

遍历集合的所有索引。

例子:

获取所有索引。

view.each do |index|
  ...
end

由于:

  • 2.0.0



265
266
267
268
269
270
271
272
273
274
275
276
277
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 265

def ()
  会话 = 客户端.发送(:get_session, @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



251
252
253
254
255
# File ' 构建/ruby-driver-v2.19/lib/ mongo / 索引/view.rb', line 251

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