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

mongomapper-foreningen springer dubletter over

Det, du ser, er nøjagtigt korrekt ud fra definitionen af ​​associationer og den underliggende forespørgsel, der matcher "in"-sætningen. Opdater du tænker på "in" som "i sættet" af distinct objekter http://en.wikipedia.org/wiki/Set_(matematik) Hentningen til brugerlisten har en underliggende forespørgsel på brugersamlingen med en $in-klausul, se http://docs.mongodb.org/manual/reference/operator/query/in/

For @task.userlist-tilknytningen får du kun dokumenterne i brugersamlingen, der matcher $in-sætningen, brugersamlingen er det primære "emne." Der er en væsentlig semantisk forskel fra

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

kontra

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

For at få "duplikater" fra den tidligere forespørgsel, skal du have duplikerede dokumenter i brugersamlingen, seriøst.;-)

Håber, at dette hjælper din forståelse.




  1. Hvad er MongoDB batch operation max størrelse?

  2. mongodb hvordan man får maksimal værdi fra samlinger

  3. MongoDB Unique Index på matrixelement på tværs af dokumenter (ikke på tværs af indlejrede dokumenter)

  4. Hvordan kan jeg installere Redis perl-bibliotek manuelt, dvs. offline. Og hvorfra kan jeg få alle afhængigheder til at installere