我有一个csv,关于哪个号码叫哪个号码和通话详情(持续时间和时间等)
我希望将所有数字都设置为数组中的特定数字。 该数组应该是一个文档数组,因此,在每个文档中我也可以拥有所有的调用详细信息。 所以最后我需要一个带有"来电者的文件"号码和"叫" array(该数组如上所定义)。
为此我提出了一个地图缩减解决方案。(非常基本和直观)。 但我的问题是,我只需要一个不同的数字,一个"来电"号码已经打电话。
我当前的mapreduce脚本重复拨打的号码。 我怎样才能在减少阶段考虑唯一数字? 我的代码如下所示:(我在mongo shell中输入)
$ awk '/^INSERT/' data > newfilename
$ cat newfilename
INSERT a=1 , b=2;
INSERT a=2 , b=10;
据我所知,map和reduce函数是java脚本函数。 所以即使是javascript编码器也可以帮助我(创建reduce函数)。
答案 0 :(得分:0)
试试这个。
db.contacts.mapReduce(function(){
emit(this.<<caller_number>>, {called:this.<<called_number>>, callDuration:this.<<callDuration>>,...});}
,function(key,values)
{
var map = {};
var called=values.filter(function removeDuplicated(it){
if (!map[it.called]){
map[it.called] = 1;
return true;
}
return false;
})
return {caller:key, called:called};},
{"query": {},"out":"new_collection"})