mongodb 無法透過設定 dropDups : true 建立唯一索引?
迷茫
迷茫 2017-04-28 09:03:35
0
5
806

資料庫中的一個欄位已經存在相同的值,想為這個欄位建立一個唯一索引,並刪除多餘的數據,於是建立索引時設定了dropDups 為true,但還是報錯重複key,是怎麼回事呀?或者有什麼方法可以快速刪除多餘的資料呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(5)
仅有的幸福

可以透過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

思路很簡單,遍歷並用dict存儲,第二次遇到時刪除。
但這無法控制刪除與保留的對象,具體可以根據你的場景調整腳本

我想大声告诉你

我也遇到這個狀況了,不知道怎麼解決,能指點一下嗎

伊谢尔伦

當資料有10W條以上的時候,透過腳本可以很快的處理嗎?還有多並發的時候,腳本是如何處理的?

洪涛

mongoDB3.0廢棄dropDups參數,以後不能透過這個刪除重複資料了。

http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4865696&uid=15795819

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板