【MongoDB入門】find()で条件に基づくレコード検索を行う方法
MongoDBで特定の条件に一致するドキュメント(レコード)を取得したい場合、find()メソッドに検索条件を指定するだけで実現できます。本記事では、サンプルコレクションを作成し、条件を指定してデータを検索する手順を実際のコード例とともに解説します。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使って、テスト用のコレクション「demo708」に複数のドキュメントを挿入します。
> db.demo708.insertOne({"Name":"John",Marks:54});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea702e4d346dcb074dc6f33")
}
> db.demo708.insertOne({"Name":"Chris",Marks:35});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea702e6d346dcb074dc6f34")
}
> db.demo708.insertOne({"Name":"David",Marks:45});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea702ebd346dcb074dc6f35")
}
> db.demo708.insertOne({"Name":"Bob",Marks:40});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea702fad346dcb074dc6f36")
}これで、「Name」(名前)と「Marks」(点数)を持つ4件のドキュメントが登録されました。
2. コレクション内の全ドキュメントを確認
続いて、find()メソッドを引数なしで実行し、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo708.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ea702e4d346dcb074dc6f33"), "Name" : "John", "Marks" : 54 }
{ "_id" : ObjectId("5ea702e6d346dcb074dc6f34"), "Name" : "Chris", "Marks" : 35 }
{ "_id" : ObjectId("5ea702ebd346dcb074dc6f35"), "Name" : "David", "Marks" : 45 }
{ "_id" : ObjectId("5ea702fad346dcb074dc6f36"), "Name" : "Bob", "Marks" : 40 }3. 条件を指定したレコード検索
ここからが本題です。条件に基づいてMongoDBのレコードを検索するには、find()の引数に条件オブジェクトを渡します。今回は比較演算子 $gt(より大きい)を使用し、「Marks」が40より大きいドキュメントのみを抽出します。
> db.demo708.find({Marks:{$gt:40}});実行結果は次のとおりです。
{ "_id" : ObjectId("5ea702e4d346dcb074dc6f33"), "Name" : "John", "Marks" : 54 }
{ "_id" : ObjectId("5ea702ebd346dcb074dc6f35"), "Name" : "David", "Marks" : 45 }Marksが54の「John」と45の「David」だけが返され、Marksが40以下の「Chris」と「Bob」は除外されていることがわかります。
まとめ
MongoDBでの条件検索は非常にシンプルで、find({フィールド名: {演算子: 値}})という形式を覚えておけば応用が利きます。$gt以外にも、$lt(未満)、$gte(以上)、$lte(以下)、$eq(等しい)などの比較演算子が用意されているので、目的に応じて組み合わせて使うことで柔軟なデータ取得が可能になります。
-
MongoDBのfind()で特定のフィールドを除外して取得する方法
MongoDBのfind()クエリで不要なフィールドを除外する基本構文MongoDBでは、find()メソッドの第2引数に射影(プロジェクション)を指定することで、結果から表示したくないフィールドを除外できます。除外したいフィールドには 0 を設定します。以下が基本の構文です。ここでは「yourFieldName1」と「yourFieldName2」という2つのフィールドを除外しています。db.yourCollectionName.find(yourQuery, {yourFieldName1: 0, yourFieldName2: 0});サンプルコレクションの作成実際に動作を確認するため、
-
MySQLで条件に基づいてレコードを並べ替える方法(ORDER BY IFの使い方)
はじめにMySQLでは、ORDER BY IF() を使うことで、特定の条件に基づいてレコードを並べ替えることができます。通常の ORDER BY 句はカラムの値に基づいてソートしますが、IF() 関数を組み合わせることで、より柔軟な並べ替えが可能になります。この記事では、実際にテーブルを作成し、条件付きのソートを行う具体的な手順を解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( Name varchar(50), Score int ); Query OK, 0 rows aff