Mongodb学习(8)pymongdb的使用——数据去重
关于pymongo的去重方法, 网上找了老半天,都没有发现单独对pymongo里面的数据进行去重的方法
网上说的最多的是 使用 distingct 方法进行去重操作, 但是这个方法,只是返回了去重之后的数据, 并没有返回整个数据列表
而且并不是说执行过后, 就把数据库中重复的内容删除了, 因此并没有达到我的需求
所以自己就重新尝试着写了一下去重的方法
def delete_repeat_data():
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db = client.local
collection = db.person
for url in collection.distinct('name'):#使用distinct方法,获取每一个独特的元素列表
num= collection.count({"name":url})#统计每一个元素的数量
print num
for i in range(1,num):#根据每一个元素的数量进行删除操作,当前元素只有一个就不再删除
print 'delete %s %d times '% (url,i)
#注意后面的参数, 很奇怪,在mongo命令行下,它为1时,是删除一个元素,这里却是为0时删除一个
collection.remove({"name":url},0)
for i in collection.find({"name":url}):#打印当前所有元素
print i
print collection.distinct('name')#再次打印一遍所要去重的元素
对单个数据库进行数据清洗
def delete_single_database_repeat_data():
import pymongo
client = pymongo.MongoClient('localhost', 27017)
db=client.GifDB #这里是将要清洗数据的数据库名字
for table in db.collection_names():
print 'table name is ',table
collection=db[table]
for url in collection.distinct('gif_url'):#使用distinct方法,获取每一个独特的元素列表
num= collection.count({"gif_url":url})#统计每一个元素的数量
print num
for i in range(1,num):#根据每一个元素的数量进行删除操作,当前元素只有一个就不再删除
print 'delete %s %d times '% (url,i)
#注意后面的参数, 很奇怪,在mongo命令行下,它为1时,是删除一个元素,这里却是为0时删除一个
collection.remove({"gif_url":url},0)
for i in collection.find({"gif_url":url}):#打印当前所有元素
print i