mongodb的查重与pymongo插入数据去重

数据库 2019-01-09 3567

# 设置唯一索引去重    
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条评论