Módulo: Mongoid::Findable

Ampliado por:
Reenviable
Definido en:
lib/mongoid/findable.rb

Overview

Este módulo define los métodos de búsqueda que se asocian al documento a nivel de clase.

Resumen del método de instancia colapsar

Detalles del método de instancia

#empty?true | false

Devuelve verdadero si el recuento es cero

Ejemplos:

¿No hay documentos guardados para este modelo?

Person.empty?

Devuelve:

  • (true | false)

    Si la colección está vacía.



94
95
96
# Archivo 'lib/mongoid/findable.rb', línea 94

def ¿vacío?
  count == 0
end

#estimated_countEntero

Devuelve un recuento estimado de registros en la base de datos.

Ejemplos:

Obtenga el recuento de documentos coincidentes.

Person.estimated_count

Devuelve:

  • (Número entero)

    El número de documentos coincidentes.



84
85
86
# Archivo 'lib/mongoid/findable.rb', línea 84

def recuento estimado
  con_ámbito_predeterminado.recuento estimado
end

#¿exists?(id_or_conditions = :none) ⇒ true | false

Devuelve verdadero si hay algún documento en la base de datos según los argumentos proporcionados.

Ejemplos:

¿Existe algún documento que exprese las condiciones?

Person.exists?

¿Existen documentos para la _id dada?

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

¿Existen documentos para las condiciones dadas?

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

Parámetros:

  • id_or_conditions (Hash | Objeto | falso) (por defecto: :none)

    un _id para buscar, un hash de condiciones, nulo o falso.

Devuelve:

  • (true | false)

    Si existen documentos para las condiciones. Siempre es falso si se pasa nil o false.



115
116
117
# Archivo 'lib/mongoid/findable.rb', línea 115

def ¿existe?(id_or_conditions = :ninguno)
  con_ámbito_predeterminado.¿existe?(id_or_conditions)
end

#find(*args, &block) ⇒ Document | Array<Document> | nil

Nota:

Cada argumento puede ser un ID individual, un arreglo de IDs o un arreglo anidado. Cada arreglo se aplanará.

Encuentra un Document o varios documentos por sus valores de _id.

Si se proporciona un solo argumento que no es un arreglo, este argumento se interpreta como el valor _id del documento que se busca. Si existe un documento que coincida en la base de datos, este documento se devuelve; de lo contrario, si la opción de configuración de Mongoid raise_not_found_error es verdadera (que es la opción por defecto), se lanza Errors::DocumentNotFound, y si raise_not_found_error es falsa, find devuelve nil.

Si se dan múltiples argumentos, o si se da un argumento tipo arreglo, se aplana el arreglo y se interpreta cada elemento del arreglo como el valor de _id del documento que se debe buscar. Mongoid luego intenta recuperar todos los documentos con los valores de _id proporcionados. El valor devuelto es un arreglo de Documentos encontrados. Cada documento aparece una vez en el arreglo devuelto, incluso si su _id se proporciona varias veces en el argumento de find. Si la opción de configuración raise_not_found_error Mongoid es verdadera, Errors::DocumentNotFound se generará una excepción si alguno de los _ids especificados no se encuentra en la base de datos. Si la opción de configuración de Mongoid raise_not_found_error es falsa, solo se devuelven aquellos documentos que se encuentran; si no se encuentra ningún documento, el valor de retorno es un arreglo vacío.

Ten en cuenta que MongoDB no permite que el campo _id sea un arreglo.

El argumento se somete a las conversiones habituales de tipo Mongoid según el tipo declarado para el campo _id. Por defecto, el campo _id es un BSON::ObjectId; esto permite que las cadenas se pasen a find y las cadenas se convertirán de forma transparente en instancias de BSON::ObjectId durante la construcción de consultas.

Si se proporciona un bloque a este método, delega a Enumerable#find y devuelve el primer documento encontrado por el objeto Crieria actual para el cual el bloque devuelve un valor verdadero. Si se proporcionan tanto un bloque como identificadores, el bloque se ignora y se devuelven los documentos con los identificadores especificados. Si se proporcionan un bloque y un procedimiento, el método delega a Enumerable#find y usa el procedimiento como predeterminado.

El método find tiene en cuenta el ámbito por defecto definido en la clase del modelo, si existe.

Parámetros:

  • *argumentos ([objeto | arreglo<Object> ]...)

    El o los id a localizar.

Devuelve:

  • (Document | Array<Document> | nil)

    Un documento o documentos coincidentes.

Aumenta:

  • Errores::DocumentNotFound Si no se encuentran todos los documentos y la opción de configuración de Mongoid raise_not_found_error es verdadera.



168
169
170
171
172
173
174
175
# Archivo 'lib/mongoid/findable.rb', línea 168

def buscar(*args, Ybloque)
  empty_or_proc = args.¿vacío? || (args.longitud == 1 && args.primero.is_a?(Proc))
  si ¿block_given? && empty_or_proc
    con_ámbito_predeterminado.buscar(*args, Ybloque)
  else
    con_ámbito_predeterminado.buscar(*args)
  end
end

#find_by(attrs = {}) {|result| ... } ⇒ documento | nil

Encuentra el primer Document dado las condiciones. Si no se encuentra un documento coincidente y Mongoid.raise_not_found_error es verdadero, arroja Mongoid::Errors::DocumentNotFound y devuelve nulo nil de otra manera.

y Mongoid.raise_not_found_error es verdadero.

Ejemplos:

Buscar el documento por un atributo que no sea su id

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

Parámetros:

  • attrs (Hash) (por defecto: {})

    Los atributos a comprobar.

Rendimientos:

  • (resultado)

Devuelve:

  • (Document | nil)

    Un documento coincidente.

Aumenta:



191
192
193
194
195
196
197
198
# Archivo 'lib/mongoid/findable.rb', línea 191

def buscar_por(attrs = {})
  Resultado = dónde(attrs).encontrar_primero
  si Resultado.nil? && Mongoid.raise_not_found_error
    propagar(Errors::Documento no encontrado.Nuevo(sí mismo, attrs))
  end
  rendimiento(Resultado) si Resultado && ¿block_given?
  Resultado
end

#find_by!(attrs = {}) {|resultado|... } ⇒ Documento

Encuentra el primer Document dadas las condiciones, o genera Mongoid::Errors::DocumentNotFound

Ejemplos:

Buscar el documento por un atributo que no sea su id

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

Parámetros:

  • attrs (Hash) (por defecto: {})

    Los atributos a comprobar.

Rendimientos:

  • (resultado)

Devuelve:

Aumenta:



211
212
213
214
215
216
# Archivo 'lib/mongoid/findable.rb', línea 211

def find_by!(attrs = {})
  Resultado = dónde(attrs).encontrar_primero
  propagar(Errors::Documento no encontrado.Nuevo(sí mismo, attrs)) a menos que Resultado
  rendimiento(Resultado) si Resultado && ¿block_given?
  Resultado
end

#first(limite = nil) ⇒ Documento también conocido como: uno

Encuentra el primer Document dadas las condiciones.

Ejemplos:

Encuentre el primer documento.

Person.first

Parámetros:

  • limit (Entero) (predeterminado: nulo)

    El número de documentos a devolver.

Devuelve:

  • (documento)

    El primer documento coincidente.



226
227
228
# Archivo 'lib/mongoid/findable.rb', línea 226

def primero(limit = nulo)
  con_ámbito_predeterminado.primero(limit)
end

#last(limit = nil) ⇒ Document

Encuentra el último Document dadas las condiciones.

Ejemplos:

Encuentra el último documento.

Person.last

Parámetros:

  • limit (Entero) (predeterminado: nulo)

    El número de documentos a devolver.

Devuelve:

  • (documento)

    El último documento coincidente.



239
240
241
# Archivo 'lib/mongoid/findable.rb', línea 239

def último(limit = nulo)
  con_ámbito_predeterminado.último(limit)
end