如何从MongoDB Collection中删除重复项

时间:2015-01-16 10:54:53

标签: java mongodb mongodb-query

我在mongodb中有一个大型集合(约270万个文档),并且有很多重复项。我尝试在集合上运行ensureIndex({id:1}, {unique:true, dropDups:true})

它向我展示了这个错误:

{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "ok" : 0,
        "errmsg" : "too may dups on index build with dropDups=true",
        "code" : 10092
}

主要问题是我无法重新插入文档。

1 个答案:

答案 0 :(得分:1)

也许不是一个非常好的解决方案,但您可以定义一个新的集合并将其命名为coll2

在其上定义您的唯一索引。

阅读第一个集合中的所有项目。

db.collection.find().addOption(DBQuery.Option.awaitData).forEach(function(doc)
{
    db.coll2.insert(doc, {continueOnError: true})
});

之后,删除旧收藏并将coll2重命名为旧收藏品名称

对于2.7万美元的文档,它需要一些时间