mongodb如何将重复的数据删除?
-
有如下数据:
{'time':'2017-04-01 16:25:21','name':'aaaa'} {'time':'2017-03-01 16:25:21','name':'bbbb'} {'time':'2017-02-01 16:25:21','name':'aaaa'} {'time':'2017-04-01 16:25:21','name':'aaaa'} {'time':'2016-11-01 16:25:21','name':'bbbb'} {'time':'2016-12-01 16:25:21','name':'aaaa'} {'time':'2016-11-01 16:25:21','name':'bbbb'}
需要删除掉同一个name下time有重复的数据,只保留一条。
-
db.yyy.insertMany([
{"_id":1,'time':'2017-04-01 16:25:21','name':'aaaa'},
{"_id":2,'time':'2017-03-01 16:25:21','name':'bbbb'},
{"_id":3,'time':'2017-02-01 16:25:21','name':'aaaa'},
{"_id":4,'time':'2017-04-01 16:25:21','name':'aaaa'},
{"_id":5,'time':'2016-11-01 16:25:21','name':'bbbb'},
{"_id":6,'time':'2016-12-01 16:25:21','name':'aaaa'},
{"_id":7,'time':'2016-11-01 16:25:21','name':'bbbb'},
]); db.yyy.aggregate([
{ $group: {
_id: { time: "$time", name: "$name"},
dups: { "$addToSet": "$_id" },
count: { "$sum": 1 }
}},
{ $match: {
count: { "$gt": 1 }
}}
],
{allowDiskUse: true}
).forEach(function(doc) {
doc.dups.shift();
db.yyy.remove({_id : {$in: doc.dups }});
});
-
谢谢了