2013-02-23 87 views
0

我是MognoDB的新手。 如何检查我的机器是否支持Map-Reduce? map-reduce的代码在另一台机器上工作,但不在我的机器上。检查Mongodb MapReduce支持

+3

所有的MongoDB服务器都支持map-reduce。它以什么方式不起作用? – JohnnyHK 2013-02-23 14:10:42

+0

谢谢!这意味着它已经支持MapReduce。我不应该明确地启用它。我的代码在Yii中使用扩展名,我也无法粘贴。但它似乎没有填充使用“out” – 2013-02-23 14:23:25

+0

其在mongo shell上运行的刚刚的javascript函数。 – 2013-03-06 12:54:55

回答

0

Map-reduce只是一个过程,并不是任何特定的服务或库。 如果你正在做的MongoDB等基本的查询......

> db.collectionname.find() 

比你可以轻松实现的map-reduce代码插入到相同的外壳...

让我从MongoDB的食谱解释基本的例子。

假设您的数据文档(在sql行中)如下所示。

> db.pageviews.find() 

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

这是任何网站的综合浏览量文档。

该解决方案需要按日分组浏览量,然后统计用户访问总次数以及当天唯一访问次数。

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

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

地图将运行这样的控制台..

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

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

    return {count: count}; 
} 

您减少将运行这样的...

然后

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

这是你的基本地图减少...

现在,当您查询集合pageview_results时,您将减少映射文档的计数。

> db.pageview_results.find()