2013-02-23 5 views
0

Je suis nouveau à MognoDB. Comment vérifier que ma machine est compatible avec Map-reduce ou non? Le code de map-reduce fonctionne sur une autre machine mais pas sur ma machine.Vérifiez Mongodb MapReduce Support

+3

Tous les serveurs MongoDB prennent en charge la réduction de la carte. En quoi ça ne marche pas? – JohnnyHK

+0

Merci! Cela signifie qu'il a construit à l'appui de MapReduce. Je ne devrais pas l'activer explicitement. Mon code est en Yii en utilisant l'extension je ne peux pas coller le puits aussi bien. Mais il semble qu'il ne dose pas remplir la collection en utilisant "out" –

+0

ses seules fonctions javascript en cours d'exécution sur mongo shell ... –

Répondre

0

Map-reduce est juste une procédure et non un service ou une bibliothèque spécifique. Si vous faites requête de base de MongoDB comme ...

> db.collectionname.find() 

Que vous pouvez facilement mettre en œuvre le code carte-réduire dans la même coquille ...

Laissez-moi vous expliquer exemple de base de livre de cuisine MongoDB.

supposez que vos documents de données (en lignes sql) sont comme ci-dessous.

> db.pageviews.find() 

{ 
"url" : "http://example.com/photos", 
"user_id" : ObjectID('4be1c916e031933119d78b30'), 
"date": "Wed May 05 2010 15:37:58 GMT-0400 (EDT)" 
} 

Ceci est un document de visualisation de page pour n'importe quel site Web.

La solution nécessite de regrouper les pages vues par jour, puis de compter le nombre total de visites utilisateur et le nombre de visites uniques pour cette journée.

> map = function() { 
    day = Date.UTC(this.date.getFullYear(), this.date.getMonth(), this.date.getDate()); 

    emit({day: day, user_id: this.user_id}, {count: 1}); 
} 

votre carte fonctionnera comme celui-ci sur la console ..

> reduce = function(key, values) { 
    var count = 0; 

    values.forEach(function(v) { 
    count += v['count']; 
    }); 

    return {count: count}; 
} 

votre réduire fonctionnera comme ça ...

puis

db.pageviews.mapReduce(map, reduce, {out: pageview_results}); 

ceci est que vous base carte réduire ...

Maintenant, lorsque vous interrogez la collection pageview_results vous obtiendrez des comptes réduits de documents mappés.

> db.pageview_results.find()