sql >> Database >  >> NoSQL >> MongoDB

mongomapper-associatie slaat duplicaten over

Wat u ziet, is precies correct uit de definitie van associaties en de onderliggende zoekopdracht die overeenkomt met de "in"-clausule. Verfris u door aan "in" te denken als "in de set" van onderscheiden objecten http://en.wikipedia.org/wiki/Set_(wiskunde) De fetch for userlist heeft een onderliggende query op de User-verzameling met een $in-clausule, zie http://docs.mongodb.org/manual/reference/operator/query/in/

Voor de @task.userlist-associatie krijgt u alleen de documenten in de User-verzameling die overeenkomen met de $in-clausule, de User-verzameling is het primaire "onderwerp". Er is een aanzienlijk semantisch verschil met

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

versus

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

Om "duplicaten" van de vorige zoekopdracht te krijgen, zou u serieus dubbele documenten in de gebruikersverzameling moeten hebben.;-)

Ik hoop dat dit je begrip helpt.




  1. mangoest:vul in in mangoest die geen ObjectId heeft

  2. MongoDB $addField en $indexOfArray in Spring Data

  3. Hoe kan ik gegevens van de ene verzameling naar de andere verwijzen? Mongodb

  4. Verkrijg de _id van het ingevoegde document in de Mongo-database in NodeJS