Mongodb 删除重复数据

参考: http://blog.csdn.net/cloume/article/details/74931998


1. Python代码除去重复记录:(测试通过)

import pymongo

# MONGODB 主机环回地址127.0.0.1
host = '127.0.0.1'
# 端口号,默认是27017
port = 27017
# 设置数据库名称
dbname = 'Data'
# 存放本次数据的表名称
collection_name = 'Collection'
# 'content'列中若有重复,除去

client = pymongo.MongoClient(host = host, port = port)
mdb = client[dbname]
collection_patent = mdb[collection_name]

patents = {}
count = 0
sum = 1;
for patent_record in collection_patent.find():
    print(sum)
    sum+=1
    if patent_record['content'] not in patents.keys():
        patents[patent_record['content']] = patent_record
    else:
        count += 1
        collection_patent.delete_one({"content":patent_record['content']})

print(count)


2.使用ensureIndex建立索引来删除重复记录,此命令适用于Mongodb 3.0以下版本。在Mongodb3.0以上版本,ensureIndex已经被createIndex取代了,同时dropDups选项也已经被移除了,所以不能再使用以上命令来去掉重复数据:

db.your_collection.ensureIndex({public_no:1}, {unique: true, dropDups: true})
  • 1

3.下面提供一种比较简单的巧方法:

  1. 将数据导出为JSON格式存档: 
    mongoexport.exe -d database_name -c collection_name -o filename.json 
  2. 清空当前集合的数据: 
    db.yourcollection.remove({})
  3. 新建唯一索引: 
    db.yourcollection.createIndex({public_no:1}, {unique:true})
  4. 导入之前存档的JSON文件数据: 
    mongoimport -d database_name -c collection_name --upsert filename.json
    用到的几个参数选项说明:-d 数据库名 -c 集合名 -o 导出后的目录及文件名--upsert 会根据唯一索引去掉重复记录



你可能感兴趣的:(Mongodb 删除重复数据)