方法一:导出文件后,再导入。
最简单的方法:
- 将数据导出为JSON格式存档: (cmd中直接运行)
mongoexport -d database_name -c collection_name -o e:/filename.json
- 清空数据:
db.yourcollection.remove({})
- 新建唯一索引:
db.yourcollection.createIndex({info_link:1}, {unique:true})
- 导入之前存档的JSON文件数据: (cmd中直接运行)
mongoimport -d database_name -c collection_name --upsert e:/filename.json
参数选项说明:-d 数据库名
-c 集合名
-o 导出后的目录及文件名
--upsert 会根据唯一索引去掉重复记录
方法二:用python脚本去重:
client = pymongo.MongoClient('localhost:27017')
db = client['taobao']
db_test = db['test']
aa = []
for i in db_test.find():
a =i['a']
b = i['b']
product = {'a':a,'b':b}
if product not in aa:
aa.append(product)
bb = (i for i in aa)
db_test.insert_many(bb,ordered=False,bypass_document_validation=True)
方法三:添加唯一索引后,再存入数据,遇到重复的数据,直接通过报错捕获过滤。
1新建唯一索引: db.yourcollection.createIndex({info_link:1}, {unique:true})
2代码插入数据:
client = pymongo.MongoClient('localhost:27017')
db = client['taobao']
db_test = db['test']
aa = [{'a':'a',},{'a':'a',},{'a':'a',}]
bb = (i for i in aa)
try:
db_test.insert_many(bb,ordered=False,bypass_document_validation=True)
except pymongo.errors.BulkWriteError: # 重复数据无法插入
print('重复数据过滤掉')
except Exception as e:
print('遇到新的报错',e)