mongodb分組統計,並且刪除重複資料
阿新 • • 發佈:2018-11-27
// 找出按pipe_id過濾重複的資料展示出來,第一個match是查詢條件,$group是分組條件,後一個match是count>1的才展示出來,allowDiskUse:true允許到硬碟操作
db.flow_data.aggregate([{ $match: { 'pipe_id': '17087582-f12b-11e8-893a-0242ac11001c' } }, { $group: { _id: { pipe_id: '$pipe_id', time: '$time' }, count: { $sum: 1 }, dups: { $addToSet: '$_id' } } }, { $match: { count: { $gt: 1 } } }], { allowDiskUse: true })
db.flow_data.aggregate([{$match:{'pipe_id':'17087582-f12b-11e8-893a-0242ac11001c'}}, {$group:{_id:{pipe_id:'$pipe_id', time:'$time'},count:{$sum:1},dups: {$addToSet: '$_id'}}},{$match:{count:{$gt:1}}}],{allowDiskUse:true})
// 找出按pipe_id+time過濾重複的資料刪除掉, doc.dups.shift()後移一位,後面按id刪除
db.flow_data.aggregate([{$match:{'pipe_id':'17087582-f12b-11e8-893a-0242ac11001c'}}, {$group:{_id:{pipe_id:'$pipe_id', time:'$time'},count:{$sum:1},dups: {$addToSet: '$_id'}}},{$match:{count:{$gt:1}}}],{allowDiskUse:true}).forEach(function(doc){doc.dups.shift();db.flow_data.remove({_id: {$in: doc.dups}});})