Mongodb 刪除重複資料的幾個方法
Mongodb 刪除重複的資料
最近在處理一些專利資料,從專利局爬資料的時候,總會間隙性出現中斷,為了保證資料的完整性就進行了一些重複下載。將資料從幾萬個Excel表格中匯入Mongodb後,第一步就是要去掉重複的資料。我的第一反應是寫個Python小指令碼,結果在執行的時候,由於資料量確實比較大,有十幾萬條,執行了半個小時仍不見結束。這時候才想著使用資料庫的查詢命令是不是可以實現去重複的功能。簡單搜尋實踐後總結如下:
1. 使用Python小指令碼去重複的程式碼:
# -*- coding: utf-8 -*-
#
# @Author yxiao@aliyun.com
#
import os
import io
import sys
from pymongo import *
reload(sys)
sys.setdefaultencoding( "utf-8" )
client = MongoClient(address, port)
db_data = client.db_name
collection_patent = db_data.collection_name
patents = {}
count = 0
for patent_record in collection_patent.find({"_id":{"$ne":0}}):
if patent_record['public_no'] not in patents.keys():
patents[patent_record['public_no']] = patent_record
else:
count += 1
collection_patent.delete_one({"public_no":patent_record['public_no']})
print count
2.使用ensureIndex
建立索引來刪除重複記錄,此命令適用於Mongodb 3.0
以下版本。在Mongodb3.0
以上版本,ensureIndex
已經被createIndex
取代了,同時dropDups
選項也已經被移除了,所以不能再使用以上命令來去掉重複資料:
db.your_collection.ensureIndex({public_no:1}, {unique: true, dropDups: true})
3.下面提供一種比較簡單的巧方法:
- 將資料匯出為JSON格式存檔:
mongoexport.exe -d database_name -c collection_name -o filename.json
- 清空當前集合的資料:
db.yourcollection.remove({})
- 新建唯一索引:
db.yourcollection.createIndex({public_no:1}, {unique:true})
- 匯入之前存檔的JSON檔案資料:
mongoimport -d database_name -c collection_name --upsert filename.json
用到的幾個引數選項說明:-d 資料庫名
-c 集合名
-o 匯出後的目錄及檔名
--upsert 會根據唯一索引去掉重複記錄
相關文章
- 刪除重複資料的幾個方法(轉)
- mongodb刪除重複資料MongoDB
- SQL Server中刪除重複資料的幾個方法SQLServer
- oracle 刪除重複資料的幾種方法Oracle
- 刪除重複資料
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- 刪除重複資料的一種高效的方法
- 重複資料刪除和SSD的互補方法
- MySQL刪除重複資料MySql
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- 刪除表裡重複資料
- sqlserver中刪除重複資料SQLServer
- oracle刪除重資料方法Oracle
- Oracle中刪除重複資料的SqlOracleSQL
- mysql 刪除表中重複的資料MySql
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle重複資料的查詢及刪除Oracle
- Oracle中刪除表中的重複資料Oracle
- Oracle查詢重複資料與刪除重複記錄Oracle
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL 刪除重複資料SQLSQL
- 海量資料處理_刪除重複行
- 根據rowid刪除重複資料
- 通過ROWID刪除重複資料
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- mongodb去除重複的資料MongoDB
- NetApp FAS Filer的重複資料刪除APP
- 刪除重複資料的三種sql寫法SQL
- MongoDB之資料刪除MongoDB
- mysql表刪除重複記錄方法MySql
- ORACLE批量刪除無主鍵重複資料Oracle
- Python 字串,list排序,刪除重複資料Python字串排序
- Oracle 刪除重複資料只留一條Oracle