クラス: Mongo::Index::View

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
列挙可能、カーソル::NonTailable 、CursorHost 、再試行可能
定義:
lib/mongo/ インデックス/view.rb

Overview

インデックスのビューを表すクラス。

以来

  • 2.0.0

定数の概要の削減

キー =

インデックス キー フィールド。

以来

  • 2.0.0

'key'.freeze
名前 =

インデックス名フィールド。

以来

  • 2.0.0

' name '.freeze
OPTIONS =

Ruby インデックス オプションからサーバー オプションへのマッピング。

以来

  • 2.0.0

{
  :background => :background,
  : ビット => : ビット,
  :bucket_size => :bucketSize,
  :default_ Language => :default_ Language,
  :expire_ after => :expireAfterSeconds,
  :expire_ after_seconds => :expireAfterSeconds,
  :key => :key,
  : 言語_オーバーライド => : 言語_オーバーライド,
  :max => :max,
  :min => :min,
  :name => :name,
  :部分_フィルター_式 => : partialFilterExpression,
  :sparse => :sparse,
  :sphere_version => :'2dsphereIndexVersion',
  :storage_ engine => :storageEngine,
  :text_version => :textIndexVersion,
  :unique => :unique,
  :version => :v,
  : 重み => : 重み,
  :collation => :collation,
  :comment => :comment,
  : wildcard_projection => : wildcardプロジェクション,
}.freeze

インスタンス属性の概要を折りたたむ

CursorHost に含まれる属性

#cursor, #timeout_mode

インスタンス メソッドの概要を折りたたむ

Cursor に含まれるメソッド::NonTailable

#cursor_type, #timeout_mode

CursorHost に含まれるメソッド

#validate_timeout_mode!

再試行可能な に含まれるメソッド

#read_worker#select_server#write_worker

コンストラクターの詳細

#初期化(コレクション、オプション = {}) = 初期化 =表示

新しいインデックス ビューを作成します。

例:

新しいインデックス ビューを作成します。

View::Index.new(collection)

パラメーター:

  • コレクション コレクション

    コレクション。

  • options ハッシュ (デフォルトは{}です)

    インデックスのリストを取得するためのオプション。

オプション ハッシュ( 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
# ファイル 'lib/mongo/インデックス/view.rb', 行 318

デフォルト 初期化(コレクション, options = {})
  @collection = コレクション
  @operation_timeout_ms = options.削除(:timeout_ms)

  validate_timeout_mode!(options)

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

インスタンス属性の詳細

# batch_size =整数(読み取り専用)

Batch_size listIndexes コマンドを送信した際の結果のバッチのサイズを返します。

次の値を返します。

  • (整数)

    batch_size listIndexes コマンドを送信する場合の結果のバッチのサイズ。

以来

  • 2.0.0



38
39
40
# ファイル 'lib/mongo/インデックス/view.rb', 行 38

デフォルト batch_size
  @batch_size
end

#コレクション=コレクション(読み取り専用)

コレクションがインデックス コレクションを返します。

次の値を返します。

  • コレクション

    コレクション インデックス コレクション。

以来

  • 2.0.0



34
35
36
# ファイル 'lib/mongo/インデックス/view.rb', 行 34

デフォルト コレクション
  @collection
end

# operation_timeout_ms = 整数 | nil |ビューにオプションとして渡された timeout_ms 値。(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

整数 | を返しますnil |ビューにオプションとして渡された timeout_ms 値。

次の値を返します。

  • (整数 | nil | ビューにオプションとして渡された timeout_ms 値。

    整数 | nil |ビューにオプションとして渡された timeout_ms 値。

以来

  • 2.0.0



44
45
46
# ファイル 'lib/mongo/インデックス/view.rb', 行 44

デフォルト 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' }
)

パラメーター:

  • モデル <Hash>配列 )

    インデックスの仕様。 各モデルには :key オプションが含まれている必要があります。ただし、配列の最後の項目は除きます。この項目は createIndexes 操作に関連するオプションを指定するハッシュである可能性があります。 次のオプションを使用できます。

    • commit_uorum: プライマリがインデックスを準備完了とマークする前に、プライマリを含むレプリカセットのデータを保持するノードの数を指定します。 潜在的な値は次のとおりです。

      • 0からレプリカセットのノード数までの整数

      • 「過半数」は、データを保持するノードの過半数が投票する必要があることを示します。

      • 投票ノード: すべての投票データ保持ノードが投票する必要があることを意味します

    • Session: 使用するセッション。

    • コメント: このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • 結果

    コマンドの結果です。

以来

  • 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
# ファイル 'lib/mongo/インデックス/view.rb', 行 216

デフォルト create_many(*モデル)
  モデル = モデル.平面
  options = {}
  場合 モデル & & !モデル.last.key?(:key)
    options = モデル.ポップ
  end

  クライアント.with_session(@options.merge(options)) 行う |セッション|
    サーバー = next_primary(nil, セッション)

    indexes = Normalize_models(モデル, サーバー)
    indexes. 行う |index|
      場合 index[:bucketSize] || index[' bucketSize ']
        クライアント.log_警告(" MongoDB 4.4以降、Haystack インデックス(bucketSize インデックス オプション)は非推奨です)
      end
    end

    スペック = {
      indexes: indexes,
      db_name: database.name,
      coll_name: コレクション.name,
      セッション: セッション,
      commit_uorum: options[:commit_uorum],
      write_concern: write_concern,
      comment: options[:comment],
    }
    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(options)
    )
    操作::CreateIndex.新着情報(スペック).実行する(サーバー, context: context)
  end
end

# create_one (キー、オプション = {}) =結果

注:

リストされているオプションは、使用可能なオプションのサブセットである可能性があることに注意してください。

コレクションにインデックスを作成します。

サーバーのバージョン別にサポートされているオプションの完全なリストについては、 MongoDB のドキュメント を参照してください。

例:

コレクションに一意のインデックスを作成します。

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

パラメーター:

  • キー ハッシュ

    フィールド名と方向のペアのハッシュ。

  • options ハッシュ (デフォルトは{}です)

    このインデックスのオプション。

オプション ハッシュ( options ):

  • :unique truefalse _ デフォルト: false _

    true の場合、このインデックスはそのフィールドに一意の制約を強制します。

  • :background truefalse _ デフォルト: false _

    true の場合、インデックスはバックグラウンドで構築されます(サーバー バージョン >= 1.3.2でのみ利用可能)

  • :drop_dups truefalse _ デフォルト: false _

    このコレクションに一意なインデックスを作成する場合、このオプションによってデータベースがインデックスを作成する最初のドキュメントが保持され、このフィールドの値が重複するドキュメントはすべて削除されます。

  • :bucket_size 整数 — default: nil

    geoHaystack インデックスで使用します。 特定の経度と緯度の特定の範囲内でグループ化するドキュメントの数。

  • :max 整数 — default: nil

    地理インデックスの最大緯度と経度を指定します。

  • :min 整数 — default: nil

    地理インデックスの最小緯度と経度を指定します。

  • :部分_フィルター_式 ハッシュ

    部分インデックスのフィルターを指定します。

  • : hidden ブール値

    : hidden が true の場合、このインデックスはコレクションに存在しますが、操作の実行時にクエリ プランナーによって使用されることはありません。

  • :commit_uorum string | Integer

    プライマリがインデックスを準備完了とマークする前に、インデックス ビルドを正常に完了する必要があるレプリカセットのデータを持つノードの数を指定します。 潜在的な値は次のとおりです。

    • 0からレプリカセットのノード数までの整数

    • 「過半数」は、データを保持するノードの過半数が投票する必要があることを示します。

    • 投票ノード: すべての投票データ保持ノードが投票する必要があることを意味します

  • :session セッション

    操作に使用するセッション。

  • :comment オブジェクト

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • 結果

    応答。

以来

  • 2.0.0



167
168
169
170
171
172
173
174
175
176
177
178
179
180
# ファイル 'lib/mongo/インデックス/view.rb', 行 167

デフォルト create_one(キー, options = {})
  options = options.dup

  create_options = {}
  場合 セッション = @options[:session]
    create_options[:session] = セッション
  end
  %i(commit_uorum セッション comment timeout_ms max_time_ms). 行う |キー|
    場合 価値 = options.削除(キー)
      create_options[キー] = 価値
    end
  end
  create_many({ キー: キー }.merge(options), create_options)
end

# drop_all (オプション = {}) =結果

コレクションのすべてのインデックスを削除します。

例:

コレクションのすべてのインデックスを削除します。

view.drop_all

パラメーター:

  • options ハッシュ (デフォルトは{}です)

    この操作のオプション。

オプション ハッシュ( options ):

  • :comment オブジェクト

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • 結果

    応答。

以来

  • 2.0.0



119
120
121
# ファイル 'lib/mongo/インデックス/view.rb', 行 119

デフォルト drop_all(options = {})
  drop_by_name(Index::すべて, options)
end

# drop_one (名前、オプション = {}) =結果

インデックスを名前で削除します。

例:

インデックスを名前で削除します。

view.drop_one('name_1')

パラメーター:

  • name ( string )

    インデックスの名前。

  • options ハッシュ (デフォルトは{}です)

    この操作のオプション。

オプション ハッシュ( options ):

  • :comment オブジェクト

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • 結果

    応答。

次の値が発生します。

以来

  • 2.0.0



101
102
103
104
# ファイル 'lib/mongo/インデックス/view.rb', 行 101

デフォルト drop_one(name, options = {})
  発生 エラー::MultiIndexDrop.新着情報 場合 name == Index::すべて
  drop_by_name(name, options)
end

# ( & ブロック) =オブジェクト

コレクションのすべてのインデックスを反復処理します。

例:

すべてのインデックスを取得します。

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
# ファイル 'lib/mongo/インデックス/view.rb', 行 279

デフォルト (&ブロック)
  セッション = クライアント.get_session(@options)
  context = 操作::Context.新着情報(
    クライアント: クライアント,
    セッション: セッション,
    operation_timeouts: operation_timeouts(@options)
  )

  cursor = read_with_retry_cursor(セッション, ServerSelector.プライマリ, 自己, context: context) 行う |サーバー|
    send_initial_query(サーバー, セッション, context)
  end
  場合 ブロック_指定
    cursor. 行う |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
# ファイル 'lib/mongo/インデックス/view.rb', 行 265

デフォルト 得る(Keys_or_name)
  find 行う |index|
    (index[名前] == Keys_or_name) || (index[キー] == Normalize_keys(Keys_or_name))
  end
end

# operation_timeouts(opts = {}) = ハッシュ

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

操作レベルで設定されている timeout_ms 値(存在する場合)、および/またはコレクション/データベース/クライアントレベルで設定されている timeout_ms 値(存在する場合)を返します。

次の値を返します。

  • ハッシュ

    操作レベルで設定されている timeout_ms 値(存在する場合)、および/またはコレクション/データベース/クライアントレベルで設定されている timeout_ms 値(存在する場合)。

以来

  • 2.0.0



340
341
342
343
344
345
346
347
348
# ファイル 'lib/mongo/インデックス/view.rb', 行 340

デフォルト operation_timeouts(ops = {})
  {}.タップ 行う |結果|
    場合 ops[:timeout_ms] || operation_timeout_ms
      結果[: operation_timeout_ms] = ops.削除(:timeout_ms) || operation_timeout_ms
    else
      結果[:in inherited_timeout_ms] = コレクション.timeout_ms
    end
  end
end

#timeout_msInteger | nil

この操作に使用する timeout_ms 値 。ビューのオプションとして指定されるか、コレクションから継承される 。

次の値を返します。

  • (Integer | nil)

    この操作の timeout_ms

以来

  • 2.0.0



332
333
334
# ファイル 'lib/mongo/インデックス/view.rb', 行 332

デフォルト timeout_ms
  operation_timeout_ms || コレクション.timeout_ms
end