數(shù)據(jù)庫中的一個(gè)字段已經(jīng)存在相同的值,想給這個(gè)字段建立一個(gè)唯一索引,并刪除多余的數(shù)據(jù),于是建立索引時(shí)設(shè)置了dropDups 為true,但還是報(bào)錯(cuò)重復(fù)key,是怎么回事呀?或者有什么方法能快速刪除多余的數(shù)據(jù)呢?
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
Pendua boleh dialih keluar melalui skrip python
from pymongo import MongoClient
client = MongoClient()
db = client.dbname
documentname = db.documentname
keys = {}
for k in documentname.find():
key = k['field']
if keys.has_key(key):
print 'duplicate key %s' % key
documentname.remove({'_id':k['_id']})
else:
print 'first record key %s' % key
keys[key]=1
Idea ini sangat mudah, rentasi dan simpan dalam dict, dan padamkannya apabila ia ditemui buat kali kedua.
Tetapi dengan cara ini anda tidak boleh mengawal objek yang dipadam dan disimpan Anda boleh melaraskan skrip mengikut senario anda
Saya juga pernah menghadapi situasi ini dan saya tidak tahu bagaimana untuk menyelesaikannya. Bolehkah anda memberi saya nasihat
Apabila terdapat lebih daripada 100,000 keping data, bolehkah ia diproses dengan cepat melalui skrip? Bagaimanakah skrip mengendalikan apabila terdapat banyak keselarasan?
mongoDB3.0 membuang parameter dropDups Data pendua tidak boleh dipadamkan melalui ini pada masa hadapan.
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4865696&uid=15795819