MongoDBで単一フィールドだけを取得するfind()クエリの使い方
MongoDBで特定のフィールドのみを検索・表示する方法
MongoDBでコレクションから単一のフィールド(または特定のフィールド)だけを取得したい場合は、find()メソッドの第2引数に射影(プロジェクション)を指定します。射影を使うことで、必要なフィールドだけを絞り込んで表示でき、不要なデータの取得を防ぐことができます。
まずは、ドキュメントを含むコレクションを作成してみましょう。
サンプルコレクションの作成
> db.demo10.insertOne({"StudentId":101,"StudentName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e0f68a7d7df943a7cec4f9b")
}
> db.demo10.insertOne({"StudentId":102,"StudentName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e0f68afd7df943a7cec4f9c")
}
> db.demo10.insertOne({"StudentId":103,"StudentName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e0f68b5d7df943a7cec4f9d")
}上記のコマンドでは、demo10というコレクションに3件の学生ドキュメントを挿入しています。
すべてのドキュメントを表示する
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo10.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e0f68a7d7df943a7cec4f9b"), "StudentId" : 101, "StudentName" : "Chris" }
{ "_id" : ObjectId("5e0f68afd7df943a7cec4f9c"), "StudentId" : 102, "StudentName" : "David" }
{ "_id" : ObjectId("5e0f68b5d7df943a7cec4f9d"), "StudentId" : 103, "StudentName" : "Bob" }単一フィールドのみを取得するクエリ
ここで、StudentNameフィールドだけを表示したい場合を見てみましょう。_idとStudentIdを除外するには、それぞれの値を0に設定します。
> db.demo10.find({},{"_id":0,"StudentId":0});このクエリを実行すると、以下の出力が得られます。
{ "StudentName" : "Chris" }
{ "StudentName" : "David" }
{ "StudentName" : "Bob" }ポイント解説
- 第1引数({}):検索条件を指定します。空のオブジェクト
{}を渡すと、すべてのドキュメントが対象になります。 - 第2引数(射影):表示したいフィールドを
1、非表示にしたいフィールドを0で指定します。上記の例では_idとStudentIdを0にすることで、結果的にStudentNameのみが表示されています。 - _idフィールドについて:
_idはデフォルトで常に表示されるため、除外したい場合は明示的に_id: 0を指定する必要があります。
このように、射影を活用することでMongoDBのクエリ結果を柔軟に制御でき、アプリケーションで必要なデータだけを効率的に取得できます。
-
MongoDBのfind()クエリでネストされたドキュメントを取得する方法
MongoDBでネストされたドキュメント(入れ子になったサブドキュメントや配列内のオブジェクト)から値を取得するには、「ドット表記(dot notation)」を使用します。この記事では、サンプルコレクションを作成し、find()クエリを使ってネストされたデータを検索する具体的な手順を解説します。 サンプルコレクションの作成 まず、insert()メソッドを使ってドキュメントを含むコレクションを作成しましょう。 > db.demo591.insert([ ... { "Name": "John", "Age": 23 },
-
MongoDBでフィールド値に含まれる「@email」のような文字列を検索する方法
MongoDBのfind()メソッドを使えば、正規表現(Regex)を活用して、フィールド値の中から特定の文字列を柔軟に検索できます。本記事では、「@email」という文字列を含むドキュメントを検索する方法を、実際のコード例とともに解説します。1. 検索用コレクションの作成まずは、メールアドレスを格納したドキュメントを持つコレクションを作成しましょう。> db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f4341781127