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

MongoDBでAND($and)とOR($or)を組み合わせたクエリの書き方

MongoDBでANDとORを組み合わせるには

MongoDBでは、$and演算子$or演算子を組み合わせることで、複数の条件を柔軟に組み合わせた高度なドキュメント検索が可能になります。本記事では、実際にサンプルコレクションを作成しながら、ANDとORを組み合わせたクエリの書き方を解説します。

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

まず、insertOne()メソッドを使用して、combinedAndOrDemoというコレクションにドキュメントを挿入します。

> db.combinedAndOrDemo.insertOne({"StudentFirstName":"John","StudentAge":23,"StudentSkill":"MongoDB"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd306dcb64f4b851c3a13e2")
}
> db.combinedAndOrDemo.insertOne({"StudentFirstName":"Larry","StudentAge":21,"StudentSkill":"MySQL"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd306f3b64f4b851c3a13e3")
}
> db.combinedAndOrDemo.insertOne({"StudentFirstName":"Sam","StudentAge":24,"StudentSkill":"SQL Server"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd30701b64f4b851c3a13e4")
}

上記のコマンドにより、学生の名前・年齢・スキルを持つ3件のドキュメントが登録されました。

2. 登録したドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを取得できます。pretty()メソッドを併用すると、結果が整形され読みやすくなります。

> db.combinedAndOrDemo.find().pretty();

実行結果は以下の通りです。

{
    "_id" : ObjectId("5cd306dcb64f4b851c3a13e2"),
    "StudentFirstName" : "John",
    "StudentAge" : 23,
    "StudentSkill" : "MongoDB"
}
{
    "_id" : ObjectId("5cd306f3b64f4b851c3a13e3"),
    "StudentFirstName" : "Larry",
    "StudentAge" : 21,
    "StudentSkill" : "MySQL"
}
{
    "_id" : ObjectId("5cd30701b64f4b851c3a13e4"),
    "StudentFirstName" : "Sam",
    "StudentAge" : 24,
    "StudentSkill" : "SQL Server"
}

3. ANDとORを組み合わせたクエリの実行

それでは、$and演算子と$or演算子を組み合わせたクエリを見てみましょう。以下の例では、「StudentFirstNameがJohn かつ _idが指定したObjectIdである」というAND条件と、「StudentSkillがMongoDBである」という条件をORで結合しています。

> db.combinedAndOrDemo.find( {"$or":[ {"$and": [{"StudentFirstName": "John"}, {"_id": ObjectId("5cd306dcb64f4b851c3a13e2")}] }, {"StudentSkill" : "MongoDB" } ] } );

このクエリを実行すると、以下の出力が得られます。

{ "_id" : ObjectId("5cd306dcb64f4b851c3a13e2"), "StudentFirstName" : "John", "StudentAge" : 23, "StudentSkill" : "MongoDB" }

クエリのポイント

$or演算子は配列形式で複数の条件を受け取り、そのうちいずれか1つでも一致すれば該当ドキュメントを返します。
$and演算子も同様に配列形式で条件を受け取りますが、すべての条件に一致した場合のみドキュメントを返します。
・両者はネストして使用できるため、「AかつB」または「C」といった複雑な検索条件もシンプルに記述できます。

このように、$andと$orを適切に組み合わせることで、RDBのWHERE句におけるAND/OR条件に相当する柔軟なデータ抽出がMongoDBでも実現できます。

  1. MongoDBでファイル名と保存場所を格納するクエリの書き方

    MongoDBでは、ファイル名とその保存場所(パス)をドキュメントとして簡単に格納できます。ここでは、insertOne()メソッドを使ってコレクションにドキュメントを挿入し、ファイル情報を保存する具体的な手順を紹介します。サンプルコレクションへのドキュメント挿入まず、例として「demo645」というコレクションを作成し、複数のファイル情報を登録してみましょう。> db.demo645.insertOne( ... { ... fileName : MongoDB Program, ... fileLocation:C:/users/workspace

  2. MongoDBで値を重複なく選択(distinct)してカウントするクエリの書き方

    MongoDBでは、アグリゲーションフレームワーク(集計パイプライン)を活用することで、配列内の値を重複なく抽出し、それぞれの出現回数をカウントできます。本記事では、insertOne()でサンプルデータを作成し、$unwindや$groupなどのステージを組み合わせてdistinct(一意)な値を選択・集計する具体的な手順を解説します。1. サンプルコレクションの作成まずは、ドキュメントを挿入してコレクションを作成します。各ドキュメントには「Name」と「Marks」を持つdetails配列が含まれています。> db.demo586.insertOne( ... {detail