MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

l'associazione mongomapper salta i duplicati

Quello che stai vedendo è esattamente corretto dalla definizione di associazioni e dalla query sottostante che corrisponde alla clausola "in". Aggiorna pensando a "in" come "nell'insieme" di distinto oggetti http://en.wikipedia.org/wiki/Set_(mathematics) Il fetch for userlist ha una query sottostante sulla raccolta User con una clausola $in, vedi http://docs.mongodb.org/manual/reference/operator/query/in/

Per l'associazione @task.userlist, otterrai solo i documenti nella raccolta User che corrispondono alla clausola $in,la raccolta User è il "soggetto" principale.C'è una differenza semantica significativa da

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

contro

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

Per ottenere "duplicati" dalla precedente query, dovresti avere documenti duplicati nella raccolta Utente, sul serio.;-)

Spero che questo aiuti la tua comprensione.