Disons que nous avons l'utilisateur et la collection de la poste. Dans la collection de post, votez stocker le nom d'utilisateur en tant que clé.Carte Mongodb réduire à travers 2 collection
db.user.insert({name:'a', age:12});
db.user.insert({name:'b', age:12});
db.user.insert({name:'c', age:22});
db.user.insert({name:'d', age:22});
db.post.insert({Title:'Title1', vote:[a]});
db.post.insert({Title:'Title2', vote:[a,b]});
db.post.insert({Title:'Title3', vote:[a,b,c]});
db.post.insert({Title:'Title4', vote:[a,b,c,d]});
Nous aimerions regrouper par la poste.Titre et trouver le nombre de votes dans l'âge de l'utilisateur différent.
> {_id:'Title1', value:{ ages:[{age:12, Count:1},{age:22, Count:0}]} }
> {_id:'Title2', value:{ ages:[{age:12, Count:2},{age:22, Count:0}]} }
> {_id:'Title3', value:{ ages:[{age:12, Count:2},{age:22, Count:1}]} }
> {_id:'Title4', value:{ ages:[{age:12, Count:2},{age:22, Count:2}]} }
J'ai parcouru et ne trouve pas un moyen d'accéder à 2 collection dans mongodb mapreduce. Pourrait-il être possible de réaliser en re-réduire?
Je sais qu'il est très simple d'incorporer le document utilisateur dans la publication, mais ce n'est pas une bonne façon de faire, car le document utilisateur réel a de nombreuses propriétés. Si nous incluons la version simplifiée du document utilisateur, cela limitera la dimension de l'analyse.
{Title:'Title1', vote:[{name:'a', age:12}]}
Il n'est pas possible d'effectuer une réduction de la mappe sur plusieurs collectes. Veuillez également expliquer votre raisonnement lorsque vous dites «ce n'est pas une bonne façon de faire» en ce qui concerne l'intégration d'un document. Fournissez votre considération de conception si possible. –