Con estos modelos:¿Cómo puedo encontrar registros por "recuento" de asociación utilizando raíles y mongoid?
class Week
has_many :proofs
end
class Proof
belongs_to :week
end
quiero hacer algo como:
Week.where(:proof.count.gt => 0)
para encontrar sólo semanas que tienen varias pruebas.
Hay una respuesta que parece hacer frente a este:
Can rails scopes filter on the number of associated classes for a given field
Sin embargo, en este ejemplo, no hay ningún atributo como proof_ids en Semana desde los identificadores se almacenan con las pruebas. Esto no funciona, por ejemplo:
Week.where(:proof_ids.gt => 0)
¿Cómo es posible esta consulta? Conceptualmente simple pero no puedo entender cómo hacer esto con mongo o mongoid.
Del mismo modo, me gustaría pedir por el número de pruebas como por ejemplo:
Week.desc(:proofs.size)
Pero esto también no funciona.
Me doy cuenta de que un contador de caché es una opción para mis dos preguntas específicas, pero también me gustaría poder hacer la consulta.
Gracias de antemano por cualquier ayuda.
Puede eliminar includes (: pruebas) para aumentar el rendimiento en una tonelada. Actualmente, está cargando todos los datos en: pruebas, cuando todo lo que realmente necesita es una consulta de recuento rápido. Pruébalo. –
@RobVolk ¡Ese era un viejo código! ¡Gracias por el aviso! – Damien
matará su solicitud porque recibirá todas las semanas con todas las pruebas de la base de datos en la memoria de su aplicación – antiqe