1

データベースに大量のデータがあります。そして、私はそれに非常に多くの重複を持っています。これらの重複をすべて削除し、そこから1つのデータのみを保持したいと思います。

たとえば、ログインオブジェクトにこのようなデータがあります

ID

123 abc

124 abc

125 abc

126 abc

127 pqr

128 pqs

「abc」という名前のユーザーを1人だけ残し、「abc」という名前の他のすべてのユーザーを削除したいのですが、事前にmongodbでそれを実現するにはどうすればよいですか。

4

1 に答える 1

1

1 つの方法は、実際にユーザー名に一意のインデックスを作成し、それに dropDups のオプションを与えることです: http://docs.mongodb.org/manual/core/indexes/#drop-duplicates

あなたの例では:

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

名前に一意のインデックスを作成し、他のすべての重複を削除します。

もちろん、これの二重の利点は、名前に一意のインデックスが付けられ、重複が再び発生しないようになったことです。

これはクライアント側でも実行できますが、インデックスを作成して実行するよりも遅くなる可能性があります。

于 2013-02-19T08:50:00.040 に答える