我在mongodb中有大约170万份文档(future 1000多万份).其中一些代表我不想要的重复条目.文档的 struct 如下所示:
{
_id: 14124412,
nodes: [
12345,
54321
],
name: "Some beauty"
}
如果文档的值为least one node same,则该文档是重复的,而另一个文档的值为same name.删除重复项的最快方法是什么?
我在mongodb中有大约170万份文档(future 1000多万份).其中一些代表我不想要的重复条目.文档的 struct 如下所示:
{
_id: 14124412,
nodes: [
12345,
54321
],
name: "Some beauty"
}
如果文档的值为least one node same,则该文档是重复的,而另一个文档的值为same name.删除重复项的最快方法是什么?
假设要从集合中永久删除包含重复name
+nodes
项的文档,可以使用dropDups: true
选项添加unique
索引:
db.test.ensureIndex({name: 1, nodes: 1}, {unique: true, dropDups: true})
正如文件中所说,在这方面要格外小心,因为它会从数据库中删除数据.首先备份数据库,以防它不能完全按照您的预期运行.
UPDATE
此解决方案仅通过MongoDB 2有效.x作为dropDups
选项在3.0(docs)中不再可用.