# 设置唯一索引去重
import pymongo
client = pymongo.MongoClient(host="127.0.0.1", port=27017)
db = client.test
collect = db.test
# 设置a字段为唯一索引,如果在插入时有相同字段就报错,可以在插入时try一下
collect.create_index([("a",1)], unique=True)
x = {
"a":4,
"b":2,
}
collect.insert(x)
1.查重
db.user.aggregate(
{'$group':{
'_id': {'IP': '$IP'},
'uniqueIds': {'$addToSet': '$_id'},
'count' : {'$sum': 1}
}},
{'$match': {
'count': {'$gt': 1}
}}
)
查询并删除重复数据
db.getCollection("阳光电影-最新电影").aggregate(
{'$group':{
'_id': {'url': '$url'},
'uniqueIds': {'$addToSet': '$_id'},
'count' : {'$sum': 1}
}},
{'$match': {
'count': {'$gt': 1}
}}
).forEach(function(doc){
doc.uniqueIds.shift();
db.getCollection("阳光电影-最新电影").remove({_id: {$in: doc.uniqueIds}});
})
2.插入去重
client = pymongo.MongoClient('127.0.0.1', 27017)
db = client.test
collection = db.test
# 对_id为md5的这条数据执行更新操作
collection.update({'_id': md5_value(url)},{'$set': {'file_type': file_type, 'url': url, 'md5_url': md5_value(url), 'status': 0}}, upsert=True)
3.代码判重
比较硬核
links = []
for i in collection.find():
link = i['url']
links.append(link)
print(len(links))
print(len(set(links)))
评论列表
已有0条评论