sql >> Base de Datos >  >> NoSQL >> MongoDB

asociación mongomapper salta duplicados

Lo que está viendo es exactamente correcto a partir de la definición de asociaciones y la consulta subyacente que coincide con la cláusula "en". Refrésquelo pensando en "en" como "en el conjunto" de distinto objetos http://en.wikipedia.org/wiki/Set_(mathematics) La obtención de la lista de usuarios tiene una consulta subyacente en la colección de usuarios con una cláusula $in, consulte http://docs.mongodb.org/manual/reference/operator/query/in/

Para la asociación @task.userlist, obtendrá solo los documentos de la colección User que coincidan con la cláusula $in, la colección User es el "asunto" principal. Hay una diferencia semántica significativa de

User.where(:user_id.in => self.user_id)

contra

self.user_id.collect |user_id| do User.where(:user_id => user_id).first; end

Para obtener "duplicados" de la consulta anterior, tendría que tener documentos duplicados en la colección de usuarios, en serio.;-)

Espero que esto ayude a su comprensión.