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

MongoDBの$or演算子で複数条件に一致するドキュメントを取得する方法

はじめに

MongoDBでは、$or演算子を使うことで、複数の条件のうちいずれか1つでも一致したドキュメントを取得できます。本記事では、サンプルコレクションを作成し、$or演算子を用いたOR条件検索の具体的な方法を解説します。

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

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

> db.demo711.insertOne({Name:"John","Marks":75,Age:21,status:"Active"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea85c215d33e20ed1097b7e")
}
> db.demo711.insertOne({Name:"Chris","Marks":55,Age:22,status:"Active"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea85c2c5d33e20ed1097b7f")
}
> db.demo711.insertOne({Name:"Bob","Marks":45,Age:20,status:"Inactive"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea85c3e5d33e20ed1097b80")
}
> db.demo711.insertOne({Name:"David","Marks":85,Age:23,status:"Active"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea85c775d33e20ed1097b81")
}

コレクション内の全ドキュメントを確認する

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

> db.demo711.find();

実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5ea85c215d33e20ed1097b7e"), "Name" : "John", "Marks" : 75, "Age" : 21, "status" : "Active" }
{ "_id" : ObjectId("5ea85c2c5d33e20ed1097b7f"), "Name" : "Chris", "Marks" : 55, "Age" : 22, "status" : "Active" }
{ "_id" : ObjectId("5ea85c3e5d33e20ed1097b80"), "Name" : "Bob", "Marks" : 45, "Age" : 20, "status" : "Inactive" }
{ "_id" : ObjectId("5ea85c775d33e20ed1097b81"), "Name" : "David", "Marks" : 85, "Age" : 23, "status" : "Active" }

$or演算子を使った複数条件の検索クエリ

それでは、$or演算子を使用したMongoDBクエリを見てみましょう。以下の例では、「Ageが23以上($gte)」「Marksが80より大きい($gt)」「statusがInactive」の3つの条件を指定しています。

> db.demo711.find( { $or: [ { Age: {$gte:23}}, {Marks:{$gt:80} }, {status: 'Inactive'} ] }) ;

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

{ "_id" : ObjectId("5ea85c3e5d33e20ed1097b80"), "Name" : "Bob", "Marks" : 45, "Age" : 20, "status" : "Inactive" }
{ "_id" : ObjectId("5ea85c775d33e20ed1097b81"), "Name" : "David", "Marks" : 85, "Age" : 23, "status" : "Active" }

結果のポイント

出力結果を確認すると、Bob(status: Inactive)とDavid(Age: 23、Marks: 85)の2件のドキュメントが取得されました。$or演算子は、配列内に指定したいずれか1つの条件でも一致すればそのドキュメントを返すため、年齢・点数・ステータスなど異なるフィールドにまたがる柔軟なOR条件検索が可能になります。なお、すべての条件に一致するドキュメントのみを取得したい場合は、$and演算子やカンマ区切りの条件指定を使用してください。

  1. MongoDBで埋め込みドキュメント(配列内のサブドキュメント)をクエリする方法

    MongoDBの埋め込みドキュメントをクエリするには?MongoDBでは、ドキュメントの中に配列として埋め込まれたサブドキュメントをクエリする場合、aggregate()メソッドを使用するのが効果的です。この記事では、$unwindと$matchを組み合わせて、埋め込みドキュメントから条件に合うデータを抽出する手順を解説します。1. サンプルコレクションの作成まずは、学生情報を配列として持つドキュメントを含むコレクションを作成しましょう。insertOne()メソッドを使ってドキュメントを挿入します。> db.demo705.insertOne( ... { ...

  2. MongoDBで1つのクエリを使って複数のドキュメントを一括更新する方法(bulkWrite活用ガイド)

    MongoDBで1つのクエリで複数のドキュメントを更新するには?MongoDBで1回のリクエスト(1つのクエリ)で複数のドキュメントを効率的に更新したい場合は、bulkWrite()メソッドを使用します。bulkWrite()は、複数の書き込み操作(insert、update、deleteなど)をまとめてサーバーに送信できるため、個別にクエリを発行するよりもパフォーマンス面で優れています。ここでは、updateOne操作を組み合わせて、複数のドキュメントのフィールドを一度に更新する手順を具体的に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って