この回答は廃止されました: dropDups
オプションはMongoDB3.0で削除されたため、ほとんどの場合、別のアプローチが必要になります。たとえば、次のようにアグリゲーションを使用できます。一意のキーを追加した後でも、MongoDBはドキュメントを複製します。
source_references.key
が確実な場合 重複するレコードを識別し、dropDups:true
を使用して一意のインデックスを確保できます MongoDB 2.6以前のインデックス作成オプション:
db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})
これにより、source_references.key
ごとに最初の一意のドキュメントが保持されます 値を設定し、重複キー違反の原因となる後続のドキュメントをすべて削除します。
重要な注意 :source_references.key
が欠落しているドキュメント フィールドはnullを持っていると見なされます 値であるため、キーフィールドが欠落している後続のドキュメントは削除されます。 sparse:true
を追加できます インデックス作成オプション。これにより、インデックスはsource_references.key
を持つドキュメントにのみ適用されます。 フィールド。
明らかな注意 :データベースのバックアップを取り、意図しないデータ損失が心配な場合は、最初にステージング環境でこれを試してください。