資料庫裡幾百萬的資料,處理起來可能會慢,於是,便簡單建立了一張小一點的結構類似的表,測試資料
/* 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
運行,得出結果: