Classificação: Mongo::Index::View

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Enumerável, Cursor::NonTailable, CursorHost, Retryable
Definido em:
lib/mongo/index/view.rb

Visão geral

Uma classe que representa uma visualização de índices.

Desde:

  • 2.0.0

Colapsode resumo constante

KEY =

O campo- chave de índice .

Desde:

  • 2.0.0

'key'.congelar
NOME =

O campo de nome do índice.

Desde:

  • 2.0.0

'nome'.congelar
OPÇÕES =

Os mapeamentos das opções de índice Ruby para as opções do servidor.

Desde:

  • 2.0.0

{
  :background => :background,
  :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,
  :comentário => :comentário,
  :wildcard_projection => :wildcardProjection,
}.congelar

Recolhimento do Resumo do atributo de instância

Atributos incluídos do CursorHost

#cursor, #timeout_mode

Recolhimento do Resumo do método de instância

Métodos incluídos do Cursor::NonTailable

#cursor_type, #timeout_mode

Métodos incluídos do CursorHost

#validate_timeout_mode!

Métodos incluídos no Retryable

#read_worker, #select_server, #write_worker

Detalhes do construtor

#inicializar(coleção, opções = {}) ➤ Visualizar

Crie a nova visualização do índice.

Exemplos:

Crie a nova visualização do índice.

View::Index.new(collection)

Parâmetros:

  • collection (Collection)

    A coleção.

  • opções (Hash) (padrão para: {})

    Opções para obter uma lista de índices.

Hash de opções (opções):

  • :batch_size (Inteiro)

    O tamanho do lote dos resultados retornados do comando listIndexes.

  • :timeout_mode (:cursor_Lifetime |:iteration)

    Como interpretar :timeout_ms (se ele se aplica à vida útil do cursor ou por iteração).

  • :timeout_ms (Inteiro)

    O tempo limite da operação em milissegundos. Deve ser um número inteiro não negativo. Um valor explícito de 0 significa infinito. O valor padrão não está definido, o que significa que o valor é herdado da coleção, do banco de dados ou do cliente.

Desde:

  • 2.0.0

[Ver fonte]

318
319
320
321
322
323
324
325
326
# Arquivo 'lib/mongo/index/view.rb', linha 318

def inicializar(collection, opções = {})
  @collection = collection
  @operation_timeout_ms = opções.excluir(:timeout_ms)

  validate_timeout_mode!(opções)

  @batch_size = opções[:batch_size]
  @opções = opções
end

Detalhes do atributo da instância

#batch_size ➤ inteiro (somente leitura)

Retorna batch_size O tamanho do lote de resultados ao enviar o comando listIndexes.

Retorna:

  • (Inteiro)

    batch_size O tamanho do lote de resultados ao enviar o comando listIndexes.

Desde:

  • 2.0.0


38
39
40
# Arquivo 'lib/mongo/index/view.rb', linha 38

def batch_size
  @batch_size
end

#collectionCollection (somente leitura)

Retorna collection A collection de índices.

Retorna:

  • (Collection)

    collection A collection de índices.

Desde:

  • 2.0.0


34
35
36
# Arquivo 'lib/mongo/index/view.rb', linha 34

def collection
  @collection
end

#operation_timeout_msInteiro | nada | O valor de timeout_ms que foi passado como uma opção para a visualização. (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o número inteiro | nada | O valor de timeout_ms que foi passado como uma opção para a visualização.

Retorna:

  • (Inteiro | nil | O valor de timeout_ms que foi passado como uma opção para a visualização.)

    Inteiro | nada | O valor de timeout_ms que foi passado como uma opção para a visualização.

Desde:

  • 2.0.0


44
45
46
# Arquivo 'lib/mongo/index/view.rb', linha 44

def operation_timeout_ms
  @operation_timeout_ms
end

Detalhes do método de instância

#create_many(*models) ➤ Resultado

Observação:

No MongoDB 3.0.0 e superior, os índices serão criados em paralelo no servidor.

Cria múltiplos índices na collection.

Exemplos:

Crie vários índices.

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

Crie múltiplos índices com opções.

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

Parâmetros:

  • modelos (Array<Hash>)

    As especificações do índice. Cada modelo DEVE incluir uma opção :key, exceto para o último item da array, que pode ser um hash especificando opções relevantes para a operação createIndexes. As seguintes opções são aceitas:

    • commit_quorum: especifique quantos membros portadores de dados de um conjunto de réplicas, incluindo o primário, devem concluir as construções dos índices com êxito antes que o primário marque os índices como prontos. Os valores em potencial são:

      • um número inteiro de 0 para o número de membros do conjunto de réplicas

      • “maioria” indicando que a maioria dos nós portadores de dados deve votar

      • “votingMembers”, o que significa que todos os nós com dados de votação devem votar

    • sessão: A sessão a ser usada.

    • comentário: um comentário fornecido pelo usuário para anexar a este comando.

Retorna:

  • (Resultado)

    O resultado do comando.

Desde:

  • 2.0.0

[Ver fonte]

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
# Arquivo 'lib/mongo/index/view.rb', linha 216

def create_many(*modelos)
  modelos = modelos.achatar
  opções = {}
  se modelos && !modelos.último.chave?(:key)
    opções = modelos.Pop
  end

  Cliente.with_session(@opções.mesclar(opções)) fazer |session|
    Servidor = próximo_primary(nada, session)

    Índices = normalize_models(modelos, Servidor)
    Índices.cada fazer |index|
      se index[:bucketSize] || index['bucketSize']
        Cliente.log_service("Os índices haystack (opção de índice bucketSize) estão obsoletos a partir do MongoDB 4.4")
      end
    end

    especificações = {
      índices: Índices,
      db_name: database.name,
      coll_name: collection.name,
      sessão: session,
      commit_quorum: opções[:commit_quorum],
      write_concern: write_concern,
      comment: opções[:comentário],
    }
    Contexto = (operação)::Contexto.Novo(
      cliente: Cliente,
      sessão: session,
      operation_timeouts: operation_timeouts(opções)
    )
    (operação)::CriarÍndice.Novo(especificações).executar, executar(Servidor, contexto: Contexto)
  end
end

#create_one(keys, options = {}) ➤ Resultado

Observação:

Observe que as opções listadas podem ser um subconjunto das disponíveis.

Cria um índice na collection.

Consulte a documentação do MongoDB para obter uma lista completa das opções suportadas por versão do servidor .

Exemplos:

Cria um índice único na collection.

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

Parâmetros:

  • keys (Hash)

    Um hash de pares de nome de campo /direção.

  • opções (Hash) (padrão para: {})

    Opções para este índice.

Hash de opções (opções):

  • :unique (verdadeiro, falso) — padrão: falso

    Se true, esse índice imporá uma restrição de exclusividade nesse campo.

  • :background (verdadeiro, falso) — padrão: falso

    Se verdadeiro, o índice será criado em segundo plano (disponível apenas para versões de servidor >= 1.3.2 )

  • :drop_dups (verdadeiro, falso) — padrão: falso

    Se estiver criando um índice único nessa coleção, essa opção manterá o primeiro documento os índices do banco de dados de dados e descartará todos os documentos subsequentes com valores duplicados nesse campo.

  • :bucket_size (Inteiro) — default: nil

    Para utilizar com índices geoHaystack. Número de documentos para agrupar dentro de uma determinada proximidade de uma determinada longitude e latitude.

  • :max (Inteiro) — default: nil

    Especifique a latitude e longitude máximas para um índice geográfico.

  • :min (Inteiro) — default: nil

    Especifique a latitude e longitude mínimas para um índice geográfico.

  • :partial_filter_expression (Hash)

    Especifique um filtro para um índice parcial.

  • :hidden (Booleano)

    Quando :hidden for verdadeiro, esse índice existirá na collection, mas não será usado pelo planejador de query ao executar operações.

  • :commit_quorum (string | Inteiro)

    Especifique quantos membros portadores de dados de um conjunto de réplicas, incluindo o primary, devem concluir as construções dos índices com êxito antes que o primary marque os índices como prontos. Os valores em potencial são:

    • um número inteiro de 0 para o número de membros do conjunto de réplicas

    • “maioria” indicando que a maioria dos nós portadores de dados deve votar

    • “votingMembers”, o que significa que todos os nós com dados de votação devem votar

  • :session (Sessão)

    A sessão a ser usada para a operação.

  • :comentário (Objeto)

    Um comentário fornecido pelo usuário para anexar a este comando.

Retorna:

  • (Resultado)

    A resposta.

Desde:

  • 2.0.0

[Ver fonte]

167
168
169
170
171
172
173
174
175
176
177
178
179
180
# Arquivo 'lib/mongo/index/view.rb', linha 167

def create_one(keys, opções = {})
  opções = opções.dup

  create_options = {}
  se session = @opções[:session]
    create_options[:session] = session
  end
  %i(commit_quorum session comment timeout_ms max_time_ms).cada fazer |chave|
    se valor = opções.excluir(chave)
      create_options[chave] = valor
    end
  end
  create_many({ chave: keys }.mesclar(opções), create_options)
end

#drop_all(options = {}) ⇒ Resultado

Solte todos os índices da coleção.

Exemplos:

Solte todos os índices da coleção.

view.drop_all

Parâmetros:

  • opções (Hash) (padrão para: {})

    Opções para esta operação.

Hash de opções (opções):

  • :comentário (Objeto)

    Um comentário fornecido pelo usuário para anexar a este comando.

Retorna:

  • (Resultado)

    A resposta.

Desde:

  • 2.0.0

[Ver fonte]

119
120
121
# Arquivo 'lib/mongo/index/view.rb', linha 119

def drop_all(opções = {})
  drop_by_name(Index::TUDO, opções)
end

#drop_one(name, options = {}) ⇒ Result

Solte um índice por seu nome.

Exemplos:

Solte um índice por seu nome.

view.drop_one('name_1')

Parâmetros:

  • name (string)

    O nome do índice.

  • opções (Hash) (padrão para: {})

    Opções para esta operação.

Hash de opções (opções):

  • :comentário (Objeto)

    Um comentário fornecido pelo usuário para anexar a este comando.

Retorna:

  • (Resultado)

    A resposta.

Aumenta:

Desde:

  • 2.0.0

[Ver fonte]

101
102
103
104
# Arquivo 'lib/mongo/index/view.rb', linha 101

def drop_one(name, opções = {})
  aumentar Erro::MultiIndexDrop.Novo se name == Index::TUDO
  drop_by_name(name, opções)
end

#cada(&bloco) ➤ Objeto

Iterar sobre todos os índices da collection.

Exemplos:

Obtenha todos os índices.

view.each do |index|
  ...
end

Desde:

  • 2.0.0

[Ver fonte]

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# Arquivo 'lib/mongo/index/view.rb', linha 279

def cada(&noum: bloco ; verb: bloquear)
  session = Cliente.get_session(@opções)
  Contexto = (operação)::Contexto.Novo(
    cliente: Cliente,
    sessão: session,
    operation_timeouts: operation_timeouts(@opções)
  )

  cursor = read_with_retry_cursor(session, ServerSelector.Principal, auto, contexto: Contexto) fazer |Servidor|
    send_initial_query(Servidor, session, Contexto)
  end
  se block_given?
    cursor.cada fazer |doc|
      rendimento doc
    end
  mais
    cursor.to_enum
  end
end

#get(keys_or_name) ➤ Hash

Método de conveniência para obter informações de índice por um nome ou especificação específica.

Exemplos:

Obtenha informações de índice por nome.

view.get('name_1')

Obtenha informações de índice pelas chaves.

view.get(name: 1)

Parâmetros:

  • chaves_or_name (Hash, string)

    O nome do índice ou especificação.

Retorna:

  • (Hash)

    As informações do índice.

Desde:

  • 2.0.0

[Ver fonte]

265
266
267
268
269
# Arquivo 'lib/mongo/index/view.rb', linha 265

def obter(chaves_or_name)
  find fazer |index|
    (index[Nome] == chaves_or_name) || (index[Chave] == normalize_keys(chaves_or_name))
  end
end

#operation_timeouts(opts = {}) ➤ Hash

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o valor de timeout_ms definido no nível de operação (se houver) e/ou timeout_ms definido no nível de coleção/ banco de dados/ cliente (se houver).

Retorna:

  • (Hash)

    valor de timeout_ms definido no nível de operação (se houver) e/ou timeout_ms definido no nível de coleção/ banco de dados/ cliente (se houver).

Desde:

  • 2.0.0

[Ver fonte]

340
341
342
343
344
345
346
347
348
# Arquivo 'lib/mongo/index/view.rb', linha 340

def operation_timeouts(opciona = {})
  {}.toque fazer |Resultado|
    se opciona[:timeout_ms] || operation_timeout_ms
      Resultado[:operation_timeout_ms] = opciona.excluir(:timeout_ms) || operation_timeout_ms
    mais
      Resultado[:inherited_timeout_ms] = collection.timeout_ms
    end
  end
end

#timeout_msInteger | nil

O valor de timeout_ms a ser usado para essa operação; especificado como uma opção para a visualização ou herdado da collection.

Retorna:

  • (Inteiro | nil)

    os timeout_ms para esta operação

Desde:

  • 2.0.0

[Ver fonte]

332
333
334
# Arquivo 'lib/mongo/index/view.rb', linha 332

def timeout_ms
  operation_timeout_ms || collection.timeout_ms
end