我想删除所有重复项,并只保留一个副本 - mongodb

时间:2013-02-19 08:45:36

标签: mongodb

我的数据库中有大量数据。而且我有很多重复的东西。我想删除所有这些重复项,并只保留一个数据,

例如我在登录对象中有这样的数据

id 名称

123 abc

124 abc

125 abc

126 abc

127 pqr

128 pqs

我想只保留一个名为“abc”的用户,并删除名称为“abc”的所有其他用户 我怎样才能在mongodb中实现它 提前谢谢

1 个答案:

答案 0 :(得分:1)

一种方法是在用户名上实际创建一个唯一索引,并为dropDups提供一个选项:http://docs.mongodb.org/manual/core/indexes/#drop-duplicates

所以对你的例子来说:

db.user.ensureIndex({name:1},{unique:1,dropDups:true})

将在名称上创建一个唯一索引,该索引将删除所有其他重复项。

当然,这样做的双重好处是您现在在名称上有一个唯一索引,可确保您不会再次获得重复项。

你也可以通过巧妙的方面做到这一点,但它可能比通过构建索引做得慢。