如何从 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 万文档,这需要一些时间
我在 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 万文档,这需要一些时间