Módulo: Mongoid::Findable

Estendido por:
Encaminhável
Definido em:
lib/mongoid/findable.rb

Visão geral

Este módulo define os métodos de localização que estão suspensos do documento no nível da classe.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#vazio?verdadeiro | false

Retorna verdadeiro se a contagem for zero

Exemplos:

Não há documentos salvos para este modelo?

Person.empty?

Retorna:

  • (verdadeiro | falso)

    Se a coleção estiver vazia.



95
96
97
# Arquivo 'lib/mongoid/findable.rb', linha 95

def vazio?
  contar == 0
end

#estimated_countInteiro

Retorna uma contagem estimada de registros no banco de banco de dados.

Exemplos:

Obtenha a contagem de documentos correspondentes.

Person.estimated_count

Retorna:

  • (Inteiro)

    O número de documentos correspondentes.



85
86
87
# Arquivo 'lib/mongoid/findable.rb', linha 85

def estimated_count
  with_default_scope.estimated_count
end

#existe?(id_or_ conditions = :none) ➤ true | false

Retorna verdadeiro se houver um documento no banco de dados de dados com base nos argumentos fornecidos.

Exemplos:

Existem documentos para as condições?

Person.exists?

Existe algum documento para determinado _id.

Person.exists?(BSON::ObjectId(...))

Existem documentos para determinadas condições.

Person.exists?(name: "...")

Parâmetros:

  • id_or_ conditions (Hash | Objeto | falso) (padrão para: :none)

    um _id para pesquisar, um hash de condições, nil ou false.

Retorna:

  • (verdadeiro | falso)

    Se houver documentos para as condições. Sempre falso se passado como nulo ou falso.



116
117
118
# Arquivo 'lib/mongoid/findable.rb', linha 116

def existe?(id_or_ conditions = : none)
  with_default_scope.existe?(id_or_ conditions)
end

#find(*args, &block) ➤ Documento | Array<Documento> | nada

Observação:

Cada argumento pode ser um ID individual, uma array de ids ou uma array agrupada. Cada array será achatada.

Localiza um Document ou vários documentos por seus valores _id.

Se um único argumento que não seja array for fornecido, esse argumento será interpretado como o valor _id de um documento a ser localizado. Se houver um documento correspondente no banco de banco de dados, esse documento será retornado; caso contrário, se a opção de configuração Mongoid raise_not_found_error for true (que é o padrão), Errors::DocumentNotFound é gerado e se raise_not_found_error for falso, find retorna nil.

Se vários argumentos forem fornecidos ou um argumento de array for fornecido, a array será achatada e cada elemento de array será interpretado como o valor _id do documento a ser localizado. O Mongoid então tenta recuperar todos os documentos com os valores _id fornecidos. O valor de retorno é uma array de documentos encontrados. Cada documento aparece uma vez na array retornada, mesmo que seu _id seja fornecido várias vezes no argumento para find. Se a opção de configuração Mongoid raise_not_found_error for true, a exceção Errors::DocumentNotFound será gerada se qualquer um dos _ids especificados não for encontrado no banco de banco de dados. Se a opção de configuração Mongoid raise_not_found_error for falsa, somente os documentos encontrados serão retornados; se nenhum documento for encontrado, o valor de retorno será uma array vazia.

Observe que o MongoDB não permite que o campo _id seja uma array.

O argumento passa por conversões de tipo Mongoid usuais com base no tipo declarado para o campo _id . Por padrão, o campo _id é um BSON::ObjectId; isso permite que strings sejam passadas para find e as strings sejam convertidas de forma transparente em instâncias BSON::ObjectId durante a construção da query.

Se esse método receber um bloco, ele delegará para Enumerable#find e retornará o primeiro documento daqueles encontrados pelo objeto Crieria atual para o qual o bloco retorna um valor verdadeiro. Se um bloco e ids forem fornecidos, o bloco será ignorado e os documentos para os ids fornecidos serão retornados. Se um bloco e um Proc forem fornecidos, o método delegará para Enumerable#find e usará o proc como padrão.

O método find leva em conta o escopo padrão definido na classe do modelo, se houver.

Parâmetros:

  • *args ([ Object | Array<Object> ]...)

    O(s) ID(s) a ser(em) encontrado(s).

Retorna:

Aumenta:

  • Erros::DocumentNotFound Se nem todos os documentos forem encontrados e a opção de configuração Mongoid raise_not_found_error for true.



169
170
171
172
173
174
175
176
# Arquivo 'lib/mongoid/findable.rb', linha 169

def find(*Args, &noum: bloco ; verb: bloquear)
  empty_or_proc = Args.vazio? || (Args.Tamanho == 1 && Args.primeiro.is_a?(Proc))
  se block_given? && empty_or_proc
    with_default_scope.find(*Args, &noum: bloco ; verb: bloquear)
  mais
    with_default_scope.find(*Args)
  end
end

#find_by(attrs = {}) {|result| ... } ➤ Documento | nada

Encontre o primeiro Document de acordo com as condições. Se um documento correspondente não for encontrado e Mongoid.raise_not_Found_error for verdadeiro, ele criará Mongoid::Errors::DocumentNotFound, retorne nulo nil caso contrário.

e Mongoid.raise_not_Found_error é verdadeiro.

Exemplos:

Encontre o documento por atributo diferente de ID

Person.find_by(:username => "superuser")

Parâmetros:

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

    Os atributos a serem verificados.

Rendimento:

  • (resultado)

Retorna:

  • (Document | nil)

    Um documento correspondente .

Aumenta:



192
193
194
195
196
197
198
199
# Arquivo 'lib/mongoid/findable.rb', linha 192

def find_by(attrs = {})
  Resultado = ONDE(attrs).find_first
  se Resultado.nada? && Mongoid.create_not_Found_error
    aumentar(Errors::DocumentNotFound.Novo(auto, attrs))
  end
  rendimento(Resultado) se Resultado && block_given?
  Resultado
end

#find_by!(attrs = {}) {|result| ... } ➤ Documento

Encontre o primeiro Document dadas as condições ou crie Mongoid::Errors::DocumentNotFound

Exemplos:

Encontre o documento por atributo diferente de ID

Person.find_by(:username => "superuser")

Parâmetros:

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

    Os atributos a serem verificados.

Rendimento:

  • (resultado)

Retorna:

  • (Documento)

    Um documento correspondente .

Aumenta:



212
213
214
215
216
217
# Arquivo 'lib/mongoid/findable.rb', linha 212

def find_by!(attrs = {})
  Resultado = ONDE(attrs).find_first
  aumentar(Errors::DocumentNotFound.Novo(auto, attrs)) a menos que Resultado
  rendimento(Resultado) se Resultado && block_given?
  Resultado
end

#first(limit = nil) ➤ Documento também conhecido como: um

Encontre o primeiro Document de acordo com as condições.

Exemplos:

Encontre o primeiro documento.

Person.first

Parâmetros:

  • limit (Inteiro) (padrão para: nil)

    O número de documentos a retornar.

Retorna:

  • (Documento)

    O primeiro documento correspondente.



227
228
229
# Arquivo 'lib/mongoid/findable.rb', linha 227

def primeiro(limit = nada)
  with_default_scope.primeiro(limit)
end

#last(limit = nil) ⇒ Document

Encontre o último Document dadas as condições.

Exemplos:

Encontre o último documento.

Person.last

Parâmetros:

  • limit (Inteiro) (padrão para: nil)

    O número de documentos a retornar.

Retorna:

  • (Documento)

    O último documento correspondente .



240
241
242
# Arquivo 'lib/mongoid/findable.rb', linha 240

def último(limit = nada)
  with_default_scope.último(limit)
end