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

mongodb4.0から重複レコードを削除します

    集計パイプラインを使用して、重複したレコードをグループ化できます:

    db.theCollection.aggregate([
       {$group: {_id: {item: "$item", qty: "$qty", size: "$size", status: "$status"}}},
       {$project: {_id: 0, item: "$_id.item", qty: "$_id.qty", size: "$_id.size", status: "$_id.status"}},
       {$out: "theCollectionWithoutDuplicates"}
    ])
    

    集約パイプラインの実行後、theCollectionWithoutDuplicates コレクションには、元の複製されたドキュメントの各グループのドキュメントと、新しい_idが含まれています。 -元のコレクションを削除して、出力を確認できます(db.theCollection.drop() )、新しいコレクションの名前を変更します(db.theCollectionWithoutDuplicates.renameCollection('theCollection') )。ドロップと名前変更は、db.theCollectionWithoutDuplicates.renameCollection('theCollection', true)で組み合わせることができます 。

    集約パイプラインの使用法の説明:

    1. db.theCollection.aggregate([]) 集計パイプラインを実行し、実行する集計ステージのリストを受け取ります
    2. $group ステージは、後続の_idとして指定されたフィールドごとにドキュメントをグループ化します フィールド
    3. $project ステージはフィールド名を変更し、ネストされた_idをフラット化します $groupによって作成されたサブドキュメント
    4. $out ステージは、集計結果のドキュメントを特定のコレクションに保存します


    1. メッセージアプリのMongoDB構造

    2. .NET用のデータベースにとらわれないnosqlフレームワークはありますか?

    3. mongodbで安全なデータベースを作成する

    4. mongodbのストアド関数を呼び出す