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

MongoDBの集計(aggregation)で_idフィールドを非表示にする方法

MongoDBの集計で_idフィールドを非表示にする方法

MongoDBの集計パイプライン(aggregation pipeline)では、デフォルトですべてのドキュメントに _id フィールドが自動的に含まれます。この _id を結果から除外したい場合は、$project ステージで _id : 0 を指定します。これにより、明示的に含めたフィールドだけが出力されます。

基本構文

_id を集計結果から非表示にするには、以下の構文を使用します。

db.yourCollectionName.aggregate(
   {$project : {
      _id : 0 ,
      yourIncludeFieldName:1,
      yourIncludeFieldName:1
   }}
).pretty();

ポイントは次のとおりです。

  • _id : 0_id フィールドを非表示にします。
  • フィールド名 : 1: 結果に含めたいフィールドを指定します。

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

動作を確認するため、まずドキュメントを含むコレクションを作成します。以下のクエリを実行してください。

> db.hideidDemo.insertOne({"UserName":"Larry","UserAge":23,"UserCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b02336de59bd9de06392")
}
> db.hideidDemo.insertOne({"UserName":"Chris","UserAge":21,"UserCountryName":"AUS"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b03036de59bd9de06393")
}
> db.hideidDemo.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92b04036de59bd9de06394")
}

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

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

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

実行すると、次のような出力が得られます。_id フィールドが各ドキュメントに含まれていることがわかります。

{
   "_id" : ObjectId("5c92b02336de59bd9de06392"),
   "UserName" : "Larry",
   "UserAge" : 23,
   "UserCountryName" : "US"
}
{
   "_id" : ObjectId("5c92b03036de59bd9de06393"),
   "UserName" : "Chris",
   "UserAge" : 21,
   "UserCountryName" : "AUS"
}
{
   "_id" : ObjectId("5c92b04036de59bd9de06394"),
   "UserName" : "Robert",
   "UserAge" : 26,
   "UserCountryName" : "UK"
}

_idを非表示にする集計クエリの実行

それでは、$project ステージを使って _id を非表示にする集計クエリを実行してみましょう。ここでは UserNameUserCountryName のみを結果に含めます。

> db.hideidDemo.aggregate(
   ... {$project : {
      ... _id : 0 ,
      ... UserName:1,
      ... UserCountryName:1
   ... }}
... ).pretty();

実行結果は以下のとおりです。_id フィールドが除外され、指定したフィールドだけが表示されていることが確認できます。

{ "UserName" : "Larry", "UserCountryName" : "US" }
{ "UserName" : "Chris", "UserCountryName" : "AUS" }
{ "UserName" : "Robert", "UserCountryName" : "UK" }

まとめ

MongoDBの集計で _id を非表示にするには、$project ステージ内で _id : 0 を設定するだけでOKです。他のフィールドは 1 を指定することで出力に含まれます。APIレスポンスなどで内部IDを見せたくない場合に非常に便利なテクニックなので、ぜひ活用してみてください。

  1. 【iOS】iMessageのアプリアイコンを非表示にする方法を解説

    iOS 11には魅力的な機能が多数搭載されており、Appleがこれまでにリリースした中でも最大級のソフトウェアアップデートと言えます。刷新されたコントロールセンター、新デザインのApp Store、強化されたSiri対応など、見逃せない要素ばかりです。すでに最新バージョンへアップデート済みの方も多いのではないでしょうか。実は、標準の「メッセージ」アプリにも大きな変更が加えられています。新しいメッセージを開くと、画面下部にiMessage用のアプリへのクイックアクセスメニューが表示されることに気づいた方もいるでしょう。頻繁に使わないユーザーにとっては、このメニューがやや邪魔に感じられることもあり

  2. 見知らぬ人からFacebookアカウントを隠す方法|プライバシー設定で自分を守る手順

    Facebookは、人と人をオンライン上でつなぐことを目的として誕生したSNSです。そのインターフェースは、世界中の誰でも簡単に見つけられるよう設計されており、名前・メールアドレス・電話番号など、さまざまな情報をもとに人物を検索できます。しかし時代とともにセキュリティへの関心が高まり、「自分のFacebookアカウントを他人に検索されたくない」と考えるユーザーが増えています。そこでFacebookには、アカウントを見つけにくくするためのプライバシー設定が用意されています。とはいえ、その操作方法を知らない方も多いのが実情です。この記事では、アカウントをいわば「ステルスモード」にする具体的な手順を