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

MongoDBのfind()で$or演算子を使ってOR条件検索を実装する方法

MongoDBでは、find()メソッド内で$or演算子を使用することで、複数の条件のうちいずれか一方でも一致するドキュメントを取得できます。この記事では、実際のコード例を通じて、OR条件による検索の実装方法をわかりやすく解説します。

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

まず、ドキュメントを含むコレクションを作成しましょう。ここでは「demo78」というコレクションに4件のドキュメントを挿入します。

> db.demo78.insertOne({"Name1":"Chris","Name2":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bd99c71bf0181ecc4228f")
}
> db.demo78.insertOne({"Name1":"Bob","Name2":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bd9ac71bf0181ecc42290")
}
> db.demo78.insertOne({"Name1":"David","Name2":"Sam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bd9b671bf0181ecc42291")
}
> db.demo78.insertOne({"Name1":"Jace","Name2":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bd9bf71bf0181ecc42292")
}

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

find()メソッドを使えば、コレクション内のすべてのドキュメントを確認できます。

> db.demo78.find();

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

{ "_id" : ObjectId("5e2bd99c71bf0181ecc4228f"), "Name1" : "Chris", "Name2" : "Mike" }
{ "_id" : ObjectId("5e2bd9ac71bf0181ecc42290"), "Name1" : "Bob", "Name2" : "Carol" }
{ "_id" : ObjectId("5e2bd9b671bf0181ecc42291"), "Name1" : "David", "Name2" : "Sam" }
{ "_id" : ObjectId("5e2bd9bf71bf0181ecc42292"), "Name1" : "Jace", "Name2" : "John" }

$or演算子を使ったOR検索の実装

続いて、find()内でOR演算子($or)を実装するクエリを見ていきましょう。以下の例では、「Name1」が「Bob」であるか、または「Name2」が「John」であるドキュメントを検索しています。

> db.demo78.find({$or: [{"Name1": "Bob"}, {Name2: "John"}] });

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

{ "_id" : ObjectId("5e2bd9ac71bf0181ecc42290"), "Name1" : "Bob", "Name2" : "Carol" }
{ "_id" : ObjectId("5e2bd9bf71bf0181ecc42292"), "Name1" : "Jace", "Name2" : "John" }

押さえておきたいポイント

$or演算子には、条件を配列形式で渡す点に注意してください。配列内の各要素は個別の条件オブジェクトとして扱われ、そのうち少なくとも1つに一致したドキュメントがすべて結果として返されます。上記の出力を見ると、「Name1」が「Bob」のドキュメントと、「Name2」が「John」のドキュメントの両方が取得できていることが分かります。AND条件で絞り込みたい場合は$and演算子を、逆に否定条件を指定したい場合は$nor$not演算子を活用するとよいでしょう。

  1. MongoDBのサブドキュメントを検索する方法:ドット表記を使ったクエリ実行手順を解説

    MongoDBでは、ネストされたサブドキュメント(埋め込みドキュメント)を検索する際に、ドット表記(dot notation)を使用します。フィールド名とサブフィールド名をドット(.)でつなぐことで、階層構造を持つデータにも簡単にアクセスできます。この記事では、実際にコレクションを作成し、サブドキュメントに対してクエリを実行するまでの手順をサンプルコード付きで解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って、サブドキュメントを含むドキュメントをコレクションに挿入します。> db.demo537.insertOne({details:{S

  2. MongoDBのfind()クエリでネストされたドキュメントを取得する方法

    MongoDBでネストされたドキュメント(入れ子になったサブドキュメントや配列内のオブジェクト)から値を取得するには、「ドット表記(dot notation)」を使用します。この記事では、サンプルコレクションを作成し、find()クエリを使ってネストされたデータを検索する具体的な手順を解説します。 サンプルコレクションの作成 まず、insert()メソッドを使ってドキュメントを含むコレクションを作成しましょう。 > db.demo591.insert([ ... { "Name": "John", "Age": 23 },