MongoDB中可以使用以下几种方式删除重复数据:
使用distinct()命令去除重复项并将结果保存到一个新的集合中。例如,以下命令将名为users的集合中name字段的重复值去除,并将结果保存到新的集合unique_users中:
db.users.aggregate([ { $group: { _id: "$name", count: { $sum: 1 }, unique_ids: { $addToSet: "$_id" } } },
{ $match: { count: { $gte: 2 } } },
{ $out: "unique_users" } ])
使用deleteMany()命令删除集合中所有重复数据。例如,以下命令将名为users的集合中name字段出现多次的文档都删除:
db.users.aggregate([
{ $group: { _id: { name: "$name" }, dups: { $push: "$_id" }, count: { $sum: 1 } } },
{ $match: { count: { $gt: 1 } } }
]).forEach(function(doc) {
doc.dups.shift();
db.users.deleteMany({ _id: { $in: doc.dups } });
})
需要注意的是,在删除重复数据之前必须了解业务需求及对重复数据的容忍度。某些情况下可以忽略存在的重复数据,而不会对业务造成影响。
网友留言: