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

MongoDBでデータの戻り形式を指定する方法($addToSetの使い方)

MongoDBでは、集計パイプラインの$addToSet演算子を利用することで、複数ドキュメントの値を重複なく配列としてまとめ、自由に戻り形式を指定できます。本記事では、実際のコード例を通じてその手順をわかりやすく解説します。

サンプルコレクションの作成

まずは、ドキュメントを格納したコレクションを作成しましょう。ここでは「FavouriteTechnology」というフィールドを持つ3件のドキュメントを挿入します。

> db.demo207.insertOne({"FavouriteTechnology":"Spring Boot"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8e7a03d395bdc21346f1")
}
> db.demo207.insertOne({"FavouriteTechnology":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8e8f03d395bdc21346f2")
}
> db.demo207.insertOne({"FavouriteTechnology":"Groovy"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8ea603d395bdc21346f3")
}

insertOne()メソッドにより、各ドキュメントが正常に挿入されました。

登録済みドキュメントの確認

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

> db.demo207.find();

上記のクエリを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e3d8e7a03d395bdc21346f1"), "FavouriteTechnology" : "Spring Boot" }
{ "_id" : ObjectId("5e3d8e8f03d395bdc21346f2"), "FavouriteTechnology" : "MongoDB" }
{ "_id" : ObjectId("5e3d8ea603d395bdc21346f3"), "FavouriteTechnology" : "Groovy" }

$addToSetで戻り形式を指定する

続いて、aggregate()メソッドと$groupステージを組み合わせ、$addToSetを使って戻り形式を指定するクエリを見ていきましょう。

> db.demo207.aggregate([
...    {
...       "$group": {
...          "_id": 0,
...          "FavouriteTechnology": {
...             "$addToSet": "$FavouriteTechnology"
...          }
...       }
...    },
...    {
...       "$project": {
...          "_id": 0,
...          "FavouriteTechnology": 1
...       }
...    }
...]);

このクエリを実行すると、以下のようにすべての技術名が1つの配列にまとめられて返されます。

{ "FavouriteTechnology" : [ "MongoDB", "Groovy", "Spring Boot" ] }

ポイント解説

$addToSetは、指定したフィールドの値を配列に追加していく演算子です。すでに配列内に存在する値は自動的に除外されるため、重複のないユニークな配列を簡単に作成できるのが特徴です。

また、後段の$projectステージで「_id: 0」を指定することで、_idフィールドを出力から除外し、「FavouriteTechnology」フィールドのみを結果として返しています。これにより、取得したいデータの形式を柔軟にコントロールできます。

このように、$groupと$addToSet、そして$projectを組み合わせることで、MongoDBにおけるデータの戻り形式を自在に設計することが可能です。大量のドキュメントから特定フィールドの値一覧を抽出したい場合などに、ぜひ活用してみてください。

  1. MongoDBの主なユースケースとは?顧客分析からリアルタイム統合まで徹底解説

    本記事は、2018年6月13日にObjectRocket.com/blogで公開された記事をもとにしています。 一貫して優れたカスタマーエクスペリエンス(顧客体験)を提供することは、今や多くの企業にとって重要な課題となっています。ここ数年で「良い顧客体験」に対する期待値は劇的に高まり、かつては斬新だと感じられたものが、今では当たり前の標準になっています。こうした素晴らしい体験を実現する鍵を握っているのが、データの集約です。 本記事では、MongoDB®の最も一般的なユースケースと、それらの選択に影響を与えるさまざまな特性について解説します。 顧客分析 データ集約は、優れた顧客体験を作り出すた

  2. データクレンジングを効率化する6つの簡単なコツ

    ```html 準備が不十分なデータは、不正確な分析結果につながり、データへの信頼性を損なう原因となります。データクレンジング(データクリーニング)とは、こうしたエラーを修正し、不完全なデータを取り除く作業のことです。データは常に丁寧にクリーニングすべきですが、必ずしも長時間かかる作業ではありません。ここでは、効率的にデータをきれいにするための6つのコツをご紹介します。別シートで列ごとにクリーニングする大規模なスプレッドシートを扱う場合、多くの人は小さな単位に分割することで、クリーニング作業の負担を軽減し、特定のセクションに集中できるようにしています。1列ずつ作業する場合は、まず新しいシートを