sql >> データベース >  >> NoSQL >> MongoDB

Mongodbのキーに基づいて重複を削除するにはどうすればよいですか?

    この回答は廃止されました: 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を持つドキュメントにのみ適用されます。 フィールド。

    明らかな注意 :データベースのバックアップを取り、意図しないデータ損失が心配な場合は、最初にステージング環境でこれを試してください。



    1. GridFSで(Javaを使用して)更新操作を実行するにはどうすればよいですか?

    2. MongoDBでデータのバージョン管理を実装する方法

    3. 春のデータmongodbidフィールドマッピング

    4. Redisがシングルスレッドの場合、どうしてこんなに速くなるのでしょうか?