Módulo: Mongoid::Criteria::Findable

Incluido en:
Mongoid::Criteria
Definido en:
lib/mongoid/criteria/findable.rb

Overview

Módulo mixin incluido en Mongoid::Criteria que añade la capacidad de encontrar un documento por ID.

Resumen del método de instancia colapsar

Detalles del método de instancia

#execute_or_raise(ids, multi) ⇒ Documento | arreglo<Documento>

Ejecuta los criterios o genera un error si no se encuentran documentos.

Ejemplos:

Ejecutar o aumentar

criteria.execute_or_raise(id)

Parámetros:

  • identificadores (objeto)

    Los argumentos pasaron.

  • multi (true | false)

    Si los argumentos fueron una lista, el valor de retorno debe ser un arreglo.

Devuelve:

Aumenta:



20
21
22
23
24
# Archivo 'lib/mongoid/criteria/findable.rb', línea 20

def execute_or_raise(identificadores, multi)
  Resultado = multiple_from_db(identificadores)
  ¡check_for_missing_documents!(Resultado, identificadores)
  multi ? Resultado : Resultado.primero
end

#find(*args) ⇒ Document | Array<Document>

Nota:

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

Encuentra los documentos coincidentes según los criterios para las IDs proporcionadas.

Ejemplos:

Buscar por un id.

criteria.find(BSON::ObjectId.new)

Encontrar por múltiples identificadores.

criteria.find([ BSON::ObjectId.new, BSON::ObjectId.new ])

Parámetros:

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

    El o los id a localizar.

Devuelve:



40
41
42
43
44
# Archivo 'lib/mongoid/criteria/findable.rb', línea 40

def buscar(*args)
  identificadores = prepare_ids_for_find(args)
  raise_invalid si identificadores.any?(&:nil?)
  for_ids(identificadores).execute_or_raise(identificadores, multi_args?(args))
end

#for_ids(ids) ⇒ Criteria

Agrega un criterio al Criteria que especifica un id que debe coincidir.

Ejemplos:

Agregar un único criterio de id.

criteria.for_ids([ 1 ])

Agrega múltiples criterios de ID.

criteria.for_ids([ 1, 2 ])

Parámetros:

  • identificadores (arreglo)

    El arreglo de identificadores.

Devuelve:



57
58
59
60
61
62
63
64
# Archivo 'lib/mongoid/criteria/findable.rb', línea 57

def for_ids(identificadores)
  identificadores = mongoizar_ids(identificadores)
  si identificadores.Tamaño > 1
    enviar(id_finder, { _id: { '$in' => identificadores } })
  else
    enviar(id_finder, { _id: identificadores.primero })
  end
end

#multiple_from_db(ids) ⇒ Array<Document>

Obtén los documentos del mapa de identidad y, si no se encuentran, consulta la base de datos.

Ejemplos:

Obtén los documentos del mapa o de los criterios.

criteria.multiple_from_map_or_db(ids)

Parámetros:

  • identificadores (arreglo<Object>)

    Los IDs buscados.

Devuelve:

  • (Array<documento>)

    Los documentos encontrados.



75
76
77
78
79
80
# Archivo 'lib/mongoid/criteria/findable.rb', línea 75

def multiple_from_db(identificadores)
  return entradas si ¿Incorporado?

  identificadores = mongoizar_ids(identificadores)
  identificadores.¿vacío? ? [] : from_database(identificadores)
end