如何从 MongoDB Collection 中删除重复项

How to remove duplicates from MongoDB Collection

我在 mongodb 中有大量 collection(约 270 万个文档),并且有很多重复项。我在 collection 上尝试了 运行 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
}

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

也许不是一个很好的解决方案,但您可以定义一个新的 collection 并将其命名为 coll2.

在上面定义你的唯一索引。

阅读第一个 collection 的所有项目。

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

之后,删除您的旧 collection 并将 coll2 重命名为您的旧 collection 名称

对于 270 万文档,这需要一些时间