MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

l'association mongomapper ignore les doublons

Ce que vous voyez est exactement correct à partir de la définition des associations et de la requête sous-jacente correspondant à la clause "in". Rafraîchissez-vous en pensant à "in" comme "dans l'ensemble" de distinct objets http://en.wikipedia.org/wiki/Set_(mathematics) La récupération de la liste d'utilisateurs a une requête sous-jacente sur la collection User avec une clause $in, voir http://docs.mongodb.org/manual/reference/operator/query/in/

Pour l'association @task.userlist, vous n'obtiendrez que les documents de la collection User qui correspondent à la clause $in, la collection User est le "sujet" principal. Il existe une différence sémantique significative par rapport à

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

contre

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

Afin d'obtenir des "doublons" de l'ancienne requête, vous devez avoir des documents en double dans la collection User, sérieusement.;-)

J'espère que cela aide votre compréhension.