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 を非表示にする集計クエリを実行してみましょう。ここでは UserName と UserCountryName のみを結果に含めます。
> 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を見せたくない場合に非常に便利なテクニックなので、ぜひ活用してみてください。
-
【iOS】iMessageのアプリアイコンを非表示にする方法を解説
iOS 11には魅力的な機能が多数搭載されており、Appleがこれまでにリリースした中でも最大級のソフトウェアアップデートと言えます。刷新されたコントロールセンター、新デザインのApp Store、強化されたSiri対応など、見逃せない要素ばかりです。すでに最新バージョンへアップデート済みの方も多いのではないでしょうか。実は、標準の「メッセージ」アプリにも大きな変更が加えられています。新しいメッセージを開くと、画面下部にiMessage用のアプリへのクイックアクセスメニューが表示されることに気づいた方もいるでしょう。頻繁に使わないユーザーにとっては、このメニューがやや邪魔に感じられることもあり
-
見知らぬ人からFacebookアカウントを隠す方法|プライバシー設定で自分を守る手順
Facebookは、人と人をオンライン上でつなぐことを目的として誕生したSNSです。そのインターフェースは、世界中の誰でも簡単に見つけられるよう設計されており、名前・メールアドレス・電話番号など、さまざまな情報をもとに人物を検索できます。しかし時代とともにセキュリティへの関心が高まり、「自分のFacebookアカウントを他人に検索されたくない」と考えるユーザーが増えています。そこでFacebookには、アカウントを見つけにくくするためのプライバシー設定が用意されています。とはいえ、その操作方法を知らない方も多いのが実情です。この記事では、アカウントをいわば「ステルスモード」にする具体的な手順を