MongoDBで特定のフィールドのみを抽出する方法($and演算子とプロジェクションの使い方)
MongoDBでは、find()メソッドに条件とプロジェクションを組み合わせることで、コレクションから特定のフィールドだけを取り出すことができます。この記事では、$and演算子を使って複数条件で絞り込みながら、1つのフィールドのみを取得する方法を解説します。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。以下のコマンドを実行して、学生情報のコレクション「selectingASingleFieldDemo」に4件のドキュメントを挿入します。
> db.selectingASingleFieldDemo.insertOne({"StudentFirstName":"John","StudentAge":23,"StudentCountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd547142cba06f46efe9f02")
}
> db.selectingASingleFieldDemo.insertOne({"StudentFirstName":"Carol","StudentAge":21,"StudentCountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd5471f2cba06f46efe9f03")
}
> db.selectingASingleFieldDemo.insertOne({"StudentFirstName":"David","StudentAge":24,"StudentCountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd5472c2cba06f46efe9f04")
}
> db.selectingASingleFieldDemo.insertOne({"StudentFirstName":"Robert","StudentAge":26,"StudentCountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd548382cba06f46efe9f05")
}find()メソッドですべてのドキュメントを表示
次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。
> db.selectingASingleFieldDemo.find().pretty();
このクエリを実行すると、以下のような出力が得られます。
{
"_id" : ObjectId("5cd547142cba06f46efe9f02"),
"StudentFirstName" : "John",
"StudentAge" : 23,
"StudentCountryName" : "US"
}
{
"_id" : ObjectId("5cd5471f2cba06f46efe9f03"),
"StudentFirstName" : "Carol",
"StudentAge" : 21,
"StudentCountryName" : "UK"
}
{
"_id" : ObjectId("5cd5472c2cba06f46efe9f04"),
"StudentFirstName" : "David",
"StudentAge" : 24,
"StudentCountryName" : "AUS"
}
{
"_id" : ObjectId("5cd548382cba06f46efe9f05"),
"StudentFirstName" : "Robert",
"StudentAge" : 26,
"StudentCountryName" : "AUS"
}$and演算子で1つのフィールドのみを選択する
MongoDBから特定のフィールドのみを取得するには、第2引数にプロジェクションを指定します。取得したいフィールドを1に設定し、不要な_idフィールドは0に設定することで除外できます。
ここでは、「年齢が21より大きい($gt)」かつ「国がAUS」という2つの条件を$and演算子で組み合わせ、該当するドキュメントから「StudentFirstName」フィールドのみを抽出します。
> db.selectingASingleFieldDemo.find(
... { $and:[{StudentAge: { $gt:21 } },
... {"StudentCountryName" : "AUS"}] },
... {StudentFirstName: 1, _id: 0});実行結果
上記のクエリを実行すると、条件に一致したドキュメントから指定したフィールドだけが出力されます。
{ "StudentFirstName" : "David" }
{ "StudentFirstName" : "Robert" }ポイントまとめ
- $and演算子:複数の検索条件をすべて満たすドキュメントを絞り込むために使用します。
- プロジェクション:
find()の第2引数で指定し、表示したいフィールドを1、非表示にしたいフィールドを0に設定します。 - _id: 0:デフォルトでは_idは常に返されますが、明示的に
_id: 0を指定すると除外できます。
このように、MongoDBでは条件指定とプロジェクションを組み合わせることで、必要なデータだけを効率的に取得することが可能です。
-
MongoDBの_idフィールドを非表示にする方法
MongoDBの_idフィールドを非表示にする方法MongoDBでは、find()メソッドでドキュメントを検索すると、デフォルトで_idフィールド(ObjectId)が必ず結果に含まれます。しかし、射影(プロジェクション)という仕組みを使えば、この_idフィールドを非表示にし、必要なフィールドだけを取得することが可能です。本記事では、具体的な手順をサンプルコード付きで解説します。1. コレクションとドキュメントの作成まず、サンプル用のコレクションを作成し、ドキュメントを挿入します。> db.demo575.insertOne({id:101, Information:{Name:&quo
-
MongoDB 4でドキュメントをソートし、特定の1つのフィールドだけを表示する方法
MongoDB 4でドキュメントを並べ替えるには、sort()メソッドを使用します。さらに、ソートした特定の1つのフィールドのみを表示したい場合は、プロジェクション(射影)を組み合わせて、表示したいフィールドに「1」を設定します。この記事では、実際のコード例を使って手順を順番に解説していきます。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、テスト用のコレクション「demo611」にドキュメントを登録します。> db.demo611.insertOne({Name:Chris}); { acknowledged : true, insertedI