MongoDB MapReduce 实战<2>

来源:互联网 发布:ipad pro毛笔字软件 编辑:程序博客网 时间:2024/06/01 23:20
  • 数据库里几百万的数据,处理起来可能会慢,于是,便简单建立了一张小一点的结构类似的表,测试数据
    /* 0 */{  "_id" : ObjectId("54fe73e36e26d21dc4391bdb"),  "CREATE_DATE" : ISODate("2014-07-26T13:57:18Z"),  "RFID_NO" : "010101000120140322000173"}/* 1 */{  "_id" : ObjectId("54fe74076e26d21dc4391bdc"),  "CREATE_DATE" : ISODate("2014-07-24T11:57:18Z"),  "RFID_NO" : "010101000120140322000173"}/* 2 */{  "_id" : ObjectId("54fe74136e26d21dc4391bdd"),  "CREATE_DATE" : ISODate("2014-07-27T09:27:18Z"),  "RFID_NO" : "010101000120140322000173"}/* 3 */{  "_id" : ObjectId("54fe742a6e26d21dc4391bde"),  "CREATE_DATE" : ISODate("2014-07-26T13:57:18Z"),  "RFID_NO" : "010101000120140322000883"}
  • 需要注意的是,时间类型的加入语句为:
     db.test.save({RFID_NO:'1',CREATE_DATE:new Date('6/26/2014 13:57:18')});
  • 编写Map
    function Map() {// 取出日志记录中rfid相同的时间记录emit(this.RFID_NO,this.CREATE_DATE); }
  • 编写Reduce
    function Reduce(key, values) {// 将相同rfid的回收时间拼接到一调记录中var ret = {rfid:key, times:[{}]};for(var i = 0;i < values.length;i++){ret.times[i] = values[i];}return ret;}
  • 配置In & Out

  • 运行,得出结果:

0 0
原创粉丝点击