更新并插入mongodb导入

时间:2014-09-29 09:46:09

标签: mongodb

以下命令正在从csv文件中正确导入数据。但问题是同一个号码有2个条目。 我需要在同一文档中的417176718两个条目(所以没有$ set)。如何使用mongo import保留这两个值?

cat final.txt
number, date, duration, type, destination
417176718 , 2013-01-23 20:09:00 , 1 , NORMAL_CLEARING , 61998487
409334392 , 2013-01-24 11:25:18 , 40 , NO_ANSWER , 09821973636
919480909 , 2013-01-25 20:58:00 , 40 , NORMAL_CLEARING , 09919480909
417176718 , 2013-01-24 20:09:00 , 1 , FAILED , 61998487

mongoimport -d mydb -c vcalls --type csv --file final.txt --headerline

1 个答案:

答案 0 :(得分:1)

这正是地图缩小的目的。

一旦你在db中得到了这个,就像这样运行map reduce:

mapper= function(){emit(this.number, {'data':[{'date':this.date, 'duration':this.duration, 'type':this.type, 'destination':this.destination}]});}

reducer = function(k,v){
    data=[];
    for (i=0;i<v.length;i++){
          for (j=0;j<v[i].data.length;j++){
                data.push(v[i].data[j]);
         }
    }
    return {'data':data}
}
db.vcalls.mapReduce(mapper, reducer, 'reducedcalls')

这应该为您提供每个号码的单个记录以及包含呼叫的列表的数据。