Módulo: Mongo::Collection::View::Writable

Incluído em:
Mongo::collection::Visualizar
Definido em:
build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb

Visão geral

Define o comportamento relacionado à gravação para visualização de collection.

Desde:

  • 2.0.0

Colapsode resumo constante

Array_filters =

A matriz filtra a constante do campo.

Desde:

  • 2.5.0

'array_filters'.congelar

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#delete_many(opts = {}) ⇒ Resultado

Remover documentos da coleção.

Exemplos:

Remover vários documentos da coleção.

collection_view.delete_many

Parâmetros:

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :collation (Hash)

    O agrupamento a ser usado.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (Resultado)

    A resposta do banco de banco de dados.

Desde:

  • 2.0.0



231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 231

def delete_many(opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end

    Cache de consulta.clear_namespace(collection.namespace)

    delete_doc = {
      (operação)::q => filtro, filtro,
      (operação)::LIMIT => 0,
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
    }.compactar

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    nro_write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_4 = Conexão.Servidor.Descrição.server_version_gte?('4.4')
      se !gte_4_4 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Excluir.Novo(
        exclui: [ delete_doc ],
        db_name: collection.database.name,
        coll_name: collection.name,
        write_concern: write_concern,
        bypass_document_validation: !!opciona[:bypass_document_validation],
        sessão: session,
        let: opciona[:let],
        comment: opciona[:comentário],
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end
end

#delete_one(opts = {}) ⇒ Resultado

Remover um documento da coleção.

Exemplos:

Remova um único documento da coleção.

collection_view.delete_one

Parâmetros:

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :collation (Hash)

    O agrupamento a ser usado.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (Resultado)

    A resposta do banco de banco de dados.

Desde:

  • 2.0.0



290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 290

def delete_one(opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end

    Cache de consulta.clear_namespace(collection.namespace)

    delete_doc = {
      (operação)::q => filtro, filtro,
      (operação)::LIMIT => 1,
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
    }.compactar

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_4 = Conexão.Servidor.Descrição.server_version_gte?('4.4')
      se !gte_4_4 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Excluir.Novo(
        exclui: [ delete_doc ],
        db_name: collection.database.name,
        coll_name: collection.name,
        write_concern: write_concern,
        bypass_document_validation: !!opciona[:bypass_document_validation],
        sessão: session,
        txn_num: txn_num,
        let: opciona[:let],
        comment: opciona[:comentário],
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end
end

#find_one_and_delete(opts = {}) ➤ BSON::Document?

Localiza um único documento no banco de dados via findAndModify e o exclui, devolvendo o documento original.

Exemplos:

Encontre um documento e exclua-o.

view.find_one_and_delete

Parâmetros:

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :max_time_ms (Inteiro)

    A quantidade máxima de tempo para permitir que o comando seja executado em milissegundos.

  • :projection (Hash)

    Os campos a serem incluídos ou excluídos no documento retornado.

  • :sort (Hash)

    Os pares de chave e direção pelos quais o conjunto de resultados será classificado.

  • :collation (Hash)

    O agrupamento a ser usado.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (BSON::Document, nil)

    O documento, se encontrado.

Desde:

  • 2.0.0



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 59

def find_one_and_delete(opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end

    Cache de consulta.clear_namespace(collection.namespace)

    cmd = {
      encontrar e modificar: collection.name,
      query: filtro, filtro,
      remover: true,
      campos: projeção,
      sort: sort,
      maxTimeMS: max_time_ms,
      bypassDocumentValidation: opciona[:bypass_document_validation],
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
      let: opciona[:let],
      comment: opciona[:comentário],
    }.compactar

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_4 = Conexão.Servidor.Descrição.server_version_gte?('4.4')
      se !gte_4_4 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Comando de gravação.Novo(
        seletor: cmd,
        db_name: database.name,
        write_concern: write_concern,
        sessão: session,
        txn_num: txn_num,
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end.primeiro&.buscar('value', nada)
end

#find_one_and_replace(replacement, opts = {}) ➤ BSON::Document

Localiza um único documento e o substitui.

Exemplos:

Encontre um documento e substitua-o, devolvendo o original.

view.find_one_and_replace({ name: 'test' }, :return_document => :before)

Encontre um documento e substitua-o, retornando o novo documento.

view.find_one_and_replace({ name: 'test' }, :return_document => :after)

Parâmetros:

  • substituição (BSON::Document)

    A substituição.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :return_document (Símbolo)

    :before ou :after.

  • :upsert (verdadeiro, falso)

    Se deve ser atualizado se o documento não existe.

  • :bypass_document_validation (verdadeiro, falso)

    Se deve ou não ignorar a validação em nível de documento .

  • :collation (Hash)

    O agrupamento a ser usado.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (BSON::Document)

    O documento.

Desde:

  • 2.0.0



127
128
129
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 127

def find_one_and_replace(substituição, opciona = {})
  find_one_and_update(substituição, opciona)
end

#find_one_and_update(document, opts = {}) ⇒ BSON::Document | nil

Localiza um único documento e o atualiza.

uma atualização deve ser aplicada.

Exemplos:

Encontre um documento e atualize-o, devolvendo o original.

view.find_one_and_update({ "$set" => { name: 'test' }}, :return_document => :before)

Parâmetros:

  • documento (BSON::Document)

    As atualizações.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :projection (Hash)

    Os campos a serem incluídos ou excluídos no documento retornado.

  • :sort (Hash)

    Os pares de chave e direção pelos quais o conjunto de resultados será classificado.

  • :return_document (Símbolo)

    :before ou :after.

  • :upsert (verdadeiro, falso)

    Se deve ser atualizado se o documento não existe.

  • :bypass_document_validation (verdadeiro, falso)

    Se deve ou não ignorar a validação em nível de documento .

  • :collation (Hash)

    O agrupamento a ser usado.

  • :array_filters (Array)

    Um conjunto de filtros especificando para quais elementos da array

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (BSON::Document | nil)

    O documento ou nulo se nenhum for encontrado.

Desde:

  • 2.0.0



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 164

def find_one_and_update(documento, opciona = {})
  valor = with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end

    Cache de consulta.clear_namespace(collection.namespace)

    cmd = {
      encontrar e modificar: collection.name,
      query: filtro, filtro,
      arrayFilters: opciona[:array_filters] || opciona['array_filters'],
      update: documento,
      campos: projeção,
      sort: sort,
      novo: !!(opciona[:return_document] && opciona[:return_document] == :after),
      upsert: opciona[:upsert],
      maxTimeMS: max_time_ms,
      bypassDocumentValidation: opciona[:bypass_document_validation],
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
      let: opciona[:let],
      comment: opciona[:comentário]
    }.compactar

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_4 = Conexão.Servidor.Descrição.server_version_gte?('4.4')
      se !gte_4_4 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Comando de gravação.Novo(
        seletor: cmd,
        db_name: database.name,
        write_concern: write_concern,
        sessão: session,
        txn_num: txn_num,
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end.primeiro&.buscar('value', nada)
  valor a menos que valor.nada? || valor.vazio?
end

#replace_one(substituição, opts = {}) ➤ Resultado

Substitui um único documento no banco de dados de dados pelo novo documento.

Exemplos:

Substitui um único documento.

collection_view.replace_one({ name: 'test' })

Parâmetros:

  • substituição (Hash)

    O documento de substituição.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :upsert (verdadeiro, falso)

    Se deve ser atualizado se o documento não existe.

  • :bypass_document_validation (verdadeiro, falso)

    Se deve ou não ignorar a validação em nível de documento .

  • :collation (Hash)

    O agrupamento a ser usado.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (Resultado)

    A resposta do banco de banco de dados.

Desde:

  • 2.0.0



355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 355

def replace_one(substituição, opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end
    validate_replacement_documents!(substituição)

    Cache de consulta.clear_namespace(collection.namespace)

    update_doc = {
      (operação)::q => filtro, filtro,
      arrayFilters: opciona[:array_filters] || opciona['array_filters'],
      (operação)::u => substituição,
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
    }.compactar
    se opciona[:upsert]
      update_doc['upsert'] = true
    end

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_2 = Conexão.Servidor.Descrição.server_version_gte?('4.2')
      se !gte_4_2 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Update.Novo(
        updates: [ update_doc ],
        db_name: collection.database.name,
        coll_name: collection.name,
        write_concern: write_concern,
        bypass_document_validation: !!opciona[:bypass_document_validation],
        sessão: session,
        txn_num: txn_num,
        let: opciona[:let],
        comment: opciona[:comentário],
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end
end

#update_many(spec, opts = {}) ➤ Resultado

Atualizar documentos na coleção.

Exemplos:

Atualizar vários documentos na coleção.

collection_view.update_many('$set' => { name: 'test' })

Parâmetros:

  • especificações (Hash | Array<Hash>)

    O documento ou pipeline de atualização.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :upsert (verdadeiro, falso)

    Se deve ser atualizado se o documento não existe.

  • :bypass_document_validation (verdadeiro, falso)

    Se deve ou não ignorar a validação em nível de documento .

  • :collation (Hash)

    O agrupamento a ser usado.

  • :array_filters (Array)

    Um conjunto de filtros que especificam a quais elementos da array uma atualização deve ser aplicada.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (Resultado)

    A resposta do banco de banco de dados.

Desde:

  • 2.0.0



427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 427

def update_many(especificações, opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end
    validate_update_documents!(especificações)

    Cache de consulta.clear_namespace(collection.namespace)

    update_doc = {
      (operação)::q => filtro, filtro,
      arrayFilters: opciona[:array_filters] || opciona['array_filters'],
      (operação)::u => especificações,
      (operação)::Multi => true,
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
    }.compactar
    se opciona[:upsert]
      update_doc['upsert'] = true
    end

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    nro_write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_2 = Conexão.Servidor.Descrição.server_version_gte?('4.2')
      se !gte_4_2 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Update.Novo(
        updates: [ update_doc ],
        db_name: collection.database.name,
        coll_name: collection.name,
        write_concern: write_concern,
        bypass_document_validation: !!opciona[:bypass_document_validation],
        sessão: session,
        let: opciona[:let],
        comment: opciona[:comentário],
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end
end

#update_one(spec, opts = {}) ⇒ Result

Atualizar um único documento na coleção.

Exemplos:

Atualizar um único documento na coleção.

collection_view.update_one('$set' => { name: 'test' })

Parâmetros:

  • especificações (Hash | Array<Hash>)

    O documento ou pipeline de atualização.

  • opciona (Hash) (padrão para: {})

    As opções.

  • opções (Hash)

    um conjunto personalizável de opções

Hash de opções (opts):

  • :upsert (verdadeiro, falso)

    Se deve ser atualizado se o documento não existe.

  • :bypass_document_validation (verdadeiro, falso)

    Se deve ou não ignorar a validação em nível de documento .

  • :collation (Hash)

    O agrupamento a ser usado.

  • :array_filters (Array)

    Um conjunto de filtros que especificam a quais elementos da array uma atualização deve ser aplicada.

  • :session (Sessão)

    A sessão a ser usada.

  • :hint (Hash | string)

    O índice a ser usado para essa operação. Pode ser especificado como um Hash (por exemplo { _id: 1 }) ou uma string (por exemplo "ID ").

  • :write_concern (Hash)

    As opções de preocupação de gravação . Pode ser :w => Inteiro, : fsync => Booleano, :j => Booleano.

Retorna:

  • (Resultado)

    A resposta do banco de banco de dados.

Desde:

  • 2.0.0



499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/writable.rb', linha 499

def update_one(especificações, opciona = {})
  with_session(opciona) fazer |session|
    write_concern = se opciona[:write_concern]
      Escreva preocupação.obter(opciona[:write_concern])
    mais
      write_concern_with_session(session)
    end
    validate_update_documents!(especificações)

    Cache de consulta.clear_namespace(collection.namespace)

    update_doc = {
      (operação)::q => filtro, filtro,
      arrayFilters: opciona[:array_filters] || opciona['array_filters'],
      (operação)::u => especificações,
      hint: opciona[:hint],
      agrupamento: opciona[:collation] || opciona['agrupamento'] || agrupamento,
    }.compactar
    se opciona[:upsert]
      update_doc['upsert'] = true
    end

    Contexto = (operação)::Contexto.Novo(cliente: Cliente, sessão: session)
    write_with_retry(write_concern, contexto: Contexto) fazer |Conexão, txn_num, Contexto|
      gte_4_2 = Conexão.Servidor.Descrição.server_version_gte?('4.2')
      se !gte_4_2 && opciona[:hint] && write_concern && !write_concern.reconhecido?
        aumentar Erro::UnsupportedOption.hint_error(unknowledged_write: true)
      end

      (operação)::Update.Novo(
        updates: [ update_doc ],
        db_name: collection.database.name,
        coll_name: collection.name,
        write_concern: write_concern,
        bypass_document_validation: !!opciona[:bypass_document_validation],
        sessão: session,
        txn_num: txn_num,
        let: opciona[:let],
        comment: opciona[:comentário],
      ).execute_with_connection(Conexão, contexto: Contexto)
    end
  end
end