// 找出按pipe_id過濾重複的數據展現出來,第一個match是查詢條件,$group是分組條件,後一個match是count>1的才展現出來,allowDiskUse:true容許到硬盤操做,不然內存不夠bash
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刪除code
// addToSet返回包含_idip
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 } }); })