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

MongoDBで特定のフィールドを除外してクエリし、_idのみを表示する方法

MongoDBで特定のフィールドだけを非表示にしてクエリを実行したい場合は、プロジェクション(射影)を使用します。find()メソッドの第2引数で、非表示にしたいフィールド名に対して「0」を設定すると、そのフィールドを結果から除外できます。


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

まず、ドキュメントを含むコレクションを作成しましょう。

> db.demo650.insertOne({_id:101,details:{Name:"Chris",Age:21}});
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo650.insertOne({_id:102,details:{Name:"Bob",Age:22}});
{ "acknowledged" : true, "insertedId" : 102 }
> db.demo650.insertOne({_id:103,details:{Name:"Sam",Age:20}});
{ "acknowledged" : true, "insertedId" : 103 }
> db.demo650.insertOne({_id:104,details:{Name:"Robert",Age:24}});
{ "acknowledged" : true, "insertedId" : 104 }

すべてのドキュメントを確認する

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

> db.demo650.find();

実行すると、以下のような結果が出力されます。

{ "_id" : 101, "details" : { "Name" : "Chris", "Age" : 21 } }
{ "_id" : 102, "details" : { "Name" : "Bob", "Age" : 22 } }
{ "_id" : 103, "details" : { "Name" : "Sam", "Age" : 20 } }
{ "_id" : 104, "details" : { "Name" : "Robert", "Age" : 24 } }

detailsフィールドを非表示にしてクエリする

ここでは「details」フィールドを非表示にしたいので、プロジェクションで { details: 0 } を指定してクエリを実行します。

> db.demo650.find({},{details:0});

実行すると、detailsフィールドが除外され、以下のように_idのみが出力されます。

{ "_id" : 101 }
{ "_id" : 102 }
{ "_id" : 103 }
{ "_id" : 104 }

ポイントまとめ

このように、find()メソッドの第2引数に { フィールド名: 0 } を指定することで、該当するフィールドを結果から除外できます。なお、_idはデフォルトで必ず返される点に注意してください。もし_idも不要な場合は、 { _id: 0 } と明示的に設定することで除外可能です。

  1. MongoDBで一意のレコードのみを表示し、重複データを除外する方法

    MongoDBのdistinct()メソッドで重複を除外するMongoDBで一意(ユニーク)なレコードのみを表示したい場合は、distinct()メソッドを使用します。このメソッドは、指定したフィールドの重複しない値だけを配列として返してくれます。ここでは、実際にサンプルコレクションを作成しながら、その使い方を確認していきましょう。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、意図的に重複した名前を含むドキュメントをいくつか挿入します。> db.demo613.insertOne({Name:Chris});{ acknowledged : tru

  2. 【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法

    MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem