脚本如下,将下面集合与字段替换成自己的集合名和重复字段名即可。
var removeInstanceIdArr = [];
var data = db.getCollection("table_test").aggregate(
[
{
"$group" : {
"_id": {"Id": "$instanceId"},
"count": {"$sum": 1},
"removeArr": {"$addToSet": '$_id'}
}
},
{
"$project" : {
"Id": "$_id.Id",
"count": "$count",
"removeArr":"$removeArr",
"_id" : 0
}
},
{
"$match" : {
"count" : {
"$gt": 1
}
}
}
],
{
"allowDiskUse": true
}
).forEach(function(doc) {
doc.removeArr.shift(); //删除重复数据中的第一条
doc.removeArr.forEach( function(instanceId){
removeInstanceIdArr.push(instanceId); // 删除的实例ID放入数组中
});
});
// 打印要删除的_id值
printjson(removeInstanceIdArr);
//删除数据
db.getCollection("table_test").remove({_id:{$in:removeInstanceIdArr}});