もっと詳しく
「データベースでの作業中に、データ重複の概念について聞いたことがありますか? レコード、物、人、または場所に正確なコピーがある場合、そのコピーはオリジナルの複製であると言われます。 従来のデータベースで作業している間、WHERE句を使用して、テーブルレコード(SQL、PostgreSQLなど)内の重複を見つけます。 一方、MongoDBでは、WHERE句を使用して、特定のデータベースのコレクション内に挿入された重複を見つけることはできません。

コレクションから重複する値を見つけるための集計関数を考え出しました。 本日のこの記事では、Mongo DBコレクション内に重複レコードを挿入し、コレクションのaggregateコマンドを使用してそれらをMongoDBシェルに表示する方法について説明します。 Ubuntu 20.04システムのターミナルシェル内でaptupdateとupgradeの手順を使用して、今日の記事から始めましょう。 そのためには、最初にログインし、「Ctrl + Alt+T」を使用してシェルを開く必要があります。 その後、シェルで以下に示す手順を試し、ユーザーのパスワードを追加して更新プロセスを続行できます。」

このプロセスを続行するには、確認が必要な場合があります。 「続行しますか?」と尋ねたら、「y」をタップします。 その後、Enterキーを押します。

システムの状況に応じて、処理に多少時間がかかる場合があります。

完全な更新後、以下に示す処理の最後の行が表示されます。

システムの更新とアップグレードが成功したら、MongoDBシェルを開いて、データベース内にいくつかのコレクションとレコードを挿入する必要があります。 そのため、画像に表示されているように、「mongo」クエリを使用してこれを行っています。 シェルは正常に準備されました。

MongoDBシェルで「db」命令を使用しているときに、「test」データベースを使用できることがわかりました。

したがって、「テスト」データベースを使用してさらにクエリを実行し、その中にコレクションを作成しています。 そのためには、「use」命令に続けてデータベースの名前、つまり「test」を試してください。

レコードを追加するには、テストデータベースにコレクションが必要です。 したがって、新しいコレクションを作成する必要があります。 そのためには、MongoDBの「createCollection()」関数と一緒に「db」命令を試してから、括弧内に新しいコレクションの名前、つまりDataを続ける必要があります。 クエリは成功し、ステータス「ok:1」に従ってコレクションが正常に作成されました。 さらに、MongoDBでは、コレクション名の前にあるfind()関数を使用して、特定のコレクションのレコードを表示する傾向があります。 したがって、「db」命令に続いてコレクション名、つまりDataを試し、関数find()を試してみました。 コレクション「データ」は現在空です。 したがって、コレクションにいくつかのレコードを追加する必要があります。

MongoDBのデータコレクション内にレコードを挿入するには、ドキュメント形式、つまりリスト形式のデータとともに、「db」命令内のinsert()関数を試す必要があります。 コレクションのドキュメントデータには、_id、title、age、priceの合計4つの列を使用しています。 データ収集のこれら4列すべてに合計5つのレコードを追加しました。

上記の出力のように、レコードは正常に追加されました。「nInserted」オプションのレコード数5を示しています。 この後、「Data」コレクションでfind()関数を使用して、このコレクションのすべてのレコードを検索して表示します。 コレクションレコードを制限しないように、find()関数の括弧に引数を渡していません。 データ収集の5つのレコードはすべて、MongoDBシェルに表示されています。

MongoDBのコレクションで重複を見つけるというトピックを扱ってきたので、コレクションにもいくつかの重複レコードが必要です。 したがって、すでに挿入されているレコードの一部の複製として使用するために、データコレクション内にさらに3つのレコードを挿入しています。 従来のデータベースで行っていたように、MongoDBでは列のIDが一意である必要があるため、「_id」列のみを更新する必要があります。 これまで、「データ」コレクション名で同じ挿入関数が使用されてきました。 3つのレコードすべてが追加されました。

これで、コレクション名「Data」で「db」命令を実行し、続いてもう一度find()関数をMongoDBシェルで実行すると、合計8つのレコードが画面に表示されます。 このコレクションデータでは、「_id」以外の列の重複値を確認できます。

「Data」コレクションのaggregate()メソッドを試して、重複している特定の列の値を一覧表示します。 以下に示すMongoDBのaggregateコマンドの構文を使用する必要があります。 オプション「$group」は、特定の列のすべての重複する値を1つに追加するために使用され、オプション$ matchは、複数のドキュメントを持つグループを見つけるために使用されます。 一方、「$ project」オプションは、重複レコードを表示する形式を指定するために使用されます。 「$group」オプションの最初のフィールドは、重複を検索する列名を指定します。 データコレクションの「タイトル」列に重複するレコードが合計3つ見つかりました。 この後、「年齢」列に対して同じクエリが試行され、3つの結果が再度取得されました。

結論

重複レコードの説明は導入段落で説明されており、従来のデータベースとMongoDBから重複を検出することの違いについて説明しました。 この目的のために、MongoDB内で新しいコレクションを作成し、その中にレコードを挿入する方法を説明しようとしました。 さらに、コレクション内の重複する値を含む特定の列を見つけるための集計関数の使用についても説明しました。 この記事では、他のデータベースとの比較として、MongoDBの重複を見つけることの明らかな違いを示しました。

The post MongoDBは重複を検索します appeared first on Gamingsym Japan.