MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで配列(リスト)内の重複する値を削除する方法

MongoDBで配列(リスト)内の重複する値を削除したい場合は、アグリゲーションフレームワーク$setUnion 演算子を組み合わせて使用するのが効果的です。$setUnion は集合演算を行う演算子で、重複する要素を自動的に取り除いてくれるため、これを活用します。

サンプルデータの作成

まずは、動作確認用のコレクションにドキュメントを挿入してみましょう。

> db.removeDuplicatesDemo.insertOne({"InstructorName":"Chris","InstructorAge":34,"InstructorSubject":
   ["Java","C","Java","C++","MongoDB","MySQL","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cb9d96c895c4fd159f80807")
}

挿入したドキュメントの確認

find() メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。

> db.removeDuplicatesDemo.find().pretty();

実行すると、次のような出力が得られます。InstructorSubject フィールドには「Java」と「MongoDB」がそれぞれ重複して含まれていることがわかります。

{
   "_id" : ObjectId("5cb9d96c895c4fd159f80807"),
   "InstructorName" : "Chris",
   "InstructorAge" : 34,
   "InstructorSubject" : [
      "Java",
      "C",
      "Java",
      "C++",
      "MongoDB",
      "MySQL",
      "MongoDB"
   ]
}

$setUnion を使った重複値の削除クエリ

それでは、aggregate() メソッドと $project ステージ、さらに $setUnion 演算子を組み合わせて、配列内の重複値を削除してみましょう。ポイントは、$setUnion の第2引数として空の配列 [] を渡すことです。こうすることで元の配列との和集合が計算され、結果的に重複が排除されます。

> db.removeDuplicatesDemo.aggregate([
...    { "$project": {
...       "InstructorName":1,
...       "InstructorAge" :1,
...       "InstructorSubject" :{ "$setUnion": [ "$InstructorSubject", [] ] }
...    }}
... ]).pretty();

実行結果は以下の通りです。「Java」と「MongoDB」の重複が解消され、各要素が1つずつだけ残っていることが確認できます。なお、$setUnion は結果をソートして返すため、元の配列と比べて要素の順序が変わる点にも注意してください。

{
   "_id" : ObjectId("5cb9d96c895c4fd159f80807"),
   "InstructorName" : "Chris",
   "InstructorAge" : 34,
   "InstructorSubject" : [
      "C",
      "C++",
      "Java",
      "MongoDB",
      "MySQL"
   ]
}
  1. Excelで重複データを見つけて削除する方法|初心者向け徹底解説

    Excelのワークシートに重複した値が含まれていると、データの正確性が損なわれ、レポートや集計結果に悪影響を及ぼすことがあります。意図的に重複させたデータでない限り、早めに対処しておくことが大切です。 この記事では、Excelファイル内の重複データを見つける方法と、それらを効率的に削除する方法を詳しく解説します。 重複行・重複データを見つける方法 まずは、どの行(または列)に同じ情報が含まれているかを確認することが重要です。ここでは、重複データを削除する前に、シート上の重複をチェックする手順をご紹介します。 方法1:ワークシート全体を検索する Excelには「条件付き書式」という

  2. Excelで重複データを検索・削除する9つの方法を徹底解説

    Excelのデータに重複した値が含まれていると、集計や分析の精度が下がってしまい、非常に厄介です。幸い、Excelには重複を見つけて削除するための機能がいくつも用意されています。作業を始める前に、必ずシートのバックアップコピーを作成しておくことをおすすめします。この記事では、Excelで重複値を「検索」「カウント」「削除」するさまざまな方法を、目的別に詳しく解説します。 1. 「重複の削除」ボタンを使う Excelには、重複した値をワンクリックで削除できる標準機能が搭載されています。最も手軽な方法です。 重複を削除したい列を選択します。 「データ」タブを開き、「重複の削除」ボタンをクリッ