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

发布于 2022-09-01 20:01:12 字数 230 浏览 14 评论 0

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

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

百变从容 2022-09-08 20:01:12

mongoDB3.0废弃dropDups参数,以后不能通过这个删除重复数据了。

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

何其悲哀 2022-09-08 20:01:12

可以通过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存储,第二次遇到时删除。
但这样无法控制删除与保留的对象,具体可以根据你的场景调整脚本

ぃ双果 2022-09-08 20:01:12

我也遇到这个情况了,不知道怎么解决,能指点一下吗

不知所踪 2022-09-08 20:01:12

当数据有10W条以上的时候,通过脚本可以很快的处理吗?还有多并发的时候,脚本是如何处理的?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文