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

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Enumerável , repetível
Definido em:
build/ruby-driver-v2.19/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

Recolhimento do Resumo do método de instância

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. Relevante apenas para quando o comando listIndexes é usado com versões do servidor >=2.8.

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

  • :batch_size (Inteiro)

    O tamanho do lote dos resultados retornados do comando listIndexes.

Desde:

  • 2.0.0



293
294
295
296
297
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 293

def inicializar(collection, opções = {})
  @collection = collection
  @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



34
35
36
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 34

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



30
31
32
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 30

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



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 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 206

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

  Cliente.enviar(: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],
    }

    (operação)::CriarÍndice.Novo(especificações).executar, executar(Servidor, contexto: (operação)::Contexto.Novo(cliente: Cliente, sessão: session))
  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



157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 157

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).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



109
110
111
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 109

def drop_all(opções = {})
  drop_by_name(Index::TUDO, comment: opções[:comentário])
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



91
92
93
94
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 91

def drop_one(name, opções = {})
  aumentar Erro::MultiIndexDrop.Novo se name == Index::TUDO
  drop_by_name(name, comment: opções[:comentário])
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



265
266
267
268
269
270
271
272
273
274
275
276
277
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 265

def cada(&noum: bloco ; verb: bloquear)
  session = Cliente.enviar(:get_session, @opções)
  cursor = read_with_retry_cursor(session, ServerSelector.Principal, auto) fazer |Servidor|
    send_initial_query(Servidor, session)
  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



251
252
253
254
255
# File 'build/ruby-driver-v2.19/lib/mongo/index/view.rb', linha 251

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