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

【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(等しい)などの比較演算子が用意されているので、目的に応じて組み合わせて使うことで柔軟なデータ取得が可能になります。

  1. MongoDBのfind()で特定のフィールドを除外して取得する方法

    MongoDBのfind()クエリで不要なフィールドを除外する基本構文MongoDBでは、find()メソッドの第2引数に射影(プロジェクション)を指定することで、結果から表示したくないフィールドを除外できます。除外したいフィールドには 0 を設定します。以下が基本の構文です。ここでは「yourFieldName1」と「yourFieldName2」という2つのフィールドを除外しています。db.yourCollectionName.find(yourQuery, {yourFieldName1: 0, yourFieldName2: 0});サンプルコレクションの作成実際に動作を確認するため、

  2. 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