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 encuentran fuera del documento a nivel de clase.

Colapso del resumen del método de instancia

Detalles del método de instancia

#¿vacío?verdadero | falso

Devuelve verdadero si el recuento es cero

Ejemplos:

¿No hay documentos guardados para este modelo?

Person.empty?

Devuelve:

  • (verdadero | falso)

    Si la colección está vacía.



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

def ¿vacío?
  count == 0
end

#recuento_estimadoEntero

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

Ejemplos:

Obtenga el recuento de documentos coincidentes.

Person.estimated_count

Devuelve:

  • (Entero)

    El número de documentos coincidentes.



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

def recuento estimado
  con alcance predeterminado.recuento estimado
end

#¿existe?(id_or_conditions =:none) ⇒ verdadero | falso

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

Ejemplos:

¿Existe algún documento que exprese las condiciones?

Person.exists?

¿Existe algún documento para el _id dado?

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

¿Existen documentos para las condiciones dadas?

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

Parámetros:

  • id_o_condiciones (Hash | Objeto | falso) (predeterminado::ninguno)

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

Devuelve:

  • (verdadero | falso)

    Si existen documentos que respalden las condiciones. Siempre falso si se aprueba "nil" o "false".



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

def ¿Existe?(id_o_condiciones = :ninguno)
  con alcance predeterminado.¿Existe?(id_o_condiciones)
end

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

Nota:

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

Encuentra un Document o varios documentos por sus valores _id.

Si se proporciona un único argumento que no sea un array, este se interpreta como el valor _id de un documento a buscar. Si existe un documento coincidente en la base de datos, se devuelve este documento; de lo contrario, si la opción de configuración raise_not_found_error de Mongoid es true (predeterminada), se genera Errors::DocumentNotFound y, si raise_not_found_error es false, find devuelve nil.

Si se proporcionan varios argumentos, o un argumento Array, este se simplifica y cada elemento se interpreta como el valor _id del documento a buscar. Mongoid intenta recuperar todos los documentos con los valores _id proporcionados. El valor de retorno es un array de los documentos encontrados. Cada documento aparece una vez en el array devuelto, incluso si su _id se proporciona varias veces en el argumento find. Si la opción de configuración raise_not_found_error de Mongoid es true, se genera la excepción Errors::DocumentNotFound si alguno de los _ids especificados no se encuentra en la base de datos. Si la opción de configuración raise_not_found_error de Mongoid es false, solo se devuelven los documentos encontrados; si no se encuentra ningún documento, el valor de retorno es un array vacío.

Tenga en cuenta que MongoDB no permite que el campo _id sea una matriz.

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

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 alcance predeterminado definido en la clase del modelo, si lo hay.

Parámetros:

  • *argumentos ([ Objeto | Matriz<Object> ]...)

    Los identificadores a buscar.

Devuelve:

  • (Document | Array<Document> | nil)

    Un documento o documentos coincidentes.

Aumentos:

  • 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.primera.is_a?(Proc))
  Si ¿bloque_dado? && empty_or_proc
    con alcance predeterminado.buscar(*args, Ybloque)
  else
    con alcance predeterminado.buscar(*args)
  end
end

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

Encuentra el primer Document dadas las condiciones. Si no se encuentra un documento coincidente y Mongoid.raise_not_found_error es verdadero, se genera Mongoid::Errors::DocumentNotFound; de lo contrario, se devuelve nulo.

y Mongoid.raise_not_found_error es verdadero.

Ejemplos:

Busque el documento por un atributo distinto a id

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

Parámetros:

  • attrs (Hash) (predeterminado: {})

    Los atributos a comprobar.

Rendimientos:

  • (resultado)

Devuelve:

  • (Document | nil)

    Un documento coincidente.

Aumentos:

  • (Errores::DocumentoNoEncontrado)

    Si no se encuentra ningún documento



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

def buscar_por(attrs = {})
  resultado = donde(attrs).encontrar_primero
  Si resultado.nil? && Mongoid.error de generación no encontrado
    propagar(Errors::Documento no encontrado.Nuevo(yo, attrs))
  end
  rendimiento(resultado) Si resultado && ¿bloque_dado?
  resultado
end

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

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

Ejemplos:

Busque el documento por un atributo distinto a id

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

Parámetros:

  • attrs (Hash) (predeterminado: {})

    Los atributos a comprobar.

Rendimientos:

  • (resultado)

Devuelve:

Aumentos:

  • (Errores::DocumentoNoEncontrado)

    Si no se encuentra ningún documento.



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

def ¡encontrar_por!(attrs = {})
  resultado = donde(attrs).encontrar_primero
  propagar(Errors::Documento no encontrado.Nuevo(yo, attrs)) a no ser que resultado
  rendimiento(resultado) Si resultado && ¿bloque_dado?
  resultado
end

#primero(límite = nulo) ⇒ Documento También conocido como: uno

Encuentra el primer Document dadas las condiciones.

Ejemplos:

Encuentra 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 primera(limit = nulo)
  con alcance predeterminado.primera(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 última(limit = nulo)
  con alcance predeterminado.última(limit)
end