recherche

Maison  >  Questions et réponses  >  le corps du texte

mongodb 无法通过设置 dropDups : true 建立唯一索引?

数据库中的一个字段已经存在相同的值,想给这个字段建立一个唯一索引,并删除多余的数据,于是建立索引时设置了dropDups 为true,但还是报错重复key,是怎么回事呀?或者有什么方法能快速删除多余的数据呢?

迷茫迷茫2838 Il y a quelques jours822

répondre à tous(5)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-04-28 09:05:35

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-04-28 09:05:35

    Les doublons peuvent être supprimés via un script 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
    
    

    L'idée est très simple, parcourez-la et stockez-la dans dict, et supprimez-la lorsqu'elle est rencontrée pour la deuxième fois.
    Mais de cette façon, vous ne pouvez pas contrôler les objets supprimés et conservés. Vous pouvez ajuster le script en fonction de votre scénario

    .

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-28 09:05:35

    J'ai également rencontré cette situation et je ne sais pas comment la résoudre. Pouvez-vous me donner quelques conseils

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-28 09:05:35

    Quand il y a plus de 100 000 données, peuvent-elles être traitées rapidement via des scripts ? Comment le script se comporte-t-il lorsqu'il y a beaucoup de concurrence ?

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-28 09:05:35

    mongoDB3.0 supprime le paramètre dropDups. Les données en double ne pourront pas être supprimées à l'avenir.

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

    répondre
    0
  • Annulerrépondre