Mongodb 删除重复数据

来源:互联网 发布:郑州支点软件 编辑:程序博客网 时间:2024/06/14 09:42

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


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

import pymongo# MONGODB 主机环回地址127.0.0.1host = '127.0.0.1'# 端口号,默认是27017port = 27017# 设置数据库名称dbname = 'Data'# 存放本次数据的表名称collection_name = 'Collection'# 'content'列中若有重复,除去client = pymongo.MongoClient(host = host, port = port)mdb = client[dbname]collection_patent = mdb[collection_name]patents = {}count = 0sum = 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 会根据唯一索引去掉重复记录



原创粉丝点击