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

$eq演算子を使わずにMongoDBで等価条件を記述する方法


MongoDBでは、$eq演算子を明示的に使わなくても、フィールド名と値を直接指定するだけで等価条件(一致検索)を簡単に記述できます。ここでは、その具体的な手順をサンプルコードとともに解説します。

1. ドキュメントを含むコレクションを作成する

まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成しましょう。

> db.operatorDemo.insertOne({"StudentSubject":["MongoDB","MySQL","Java"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cef94eaef71edecf6a1f6a2")
}
> db.operatorDemo.insertOne({"StudentSubject":["Java","C","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cef94faef71edecf6a1f6a3")
}

2. find()メソッドですべてのドキュメントを表示する

find()メソッドを使用すると、コレクション内のすべてのドキュメントを確認できます。pretty()を付けることで、結果を見やすい形式で表示できます。

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

出力

{
   "_id" : ObjectId("5cef94eaef71edecf6a1f6a2"),
   "StudentSubject" : [
      "MongoDB",
      "MySQL",
      "Java"
   ]
}
{
   "_id" : ObjectId("5cef94faef71edecf6a1f6a3"),
   "StudentSubject" : [
      "Java",
      "C",
      "C++"
   ]
}

3. $eq演算子を使わない等価条件のクエリ

通常、等価条件は { field: { $eq: value } } の形式で記述しますが、MongoDBでは { field: value } のように値を直接指定するだけで、同じ意味になります。配列フィールドの場合、指定した値が配列内のいずれかの要素と一致すれば、そのドキュメントが検索対象となります。

以下は、「StudentSubject」フィールドに「MongoDB」が含まれるドキュメントを検索するクエリの例です。

> db.operatorDemo.find({StudentSubject:"MongoDB"});

出力

{ "_id" : ObjectId("5cef94eaef71edecf6a1f6a2"), "StudentSubject" : [ "MongoDB", "MySQL", "Java" ] }

このように、$eq演算子を省略しても同じ結果が得られるため、実際の開発ではシンプルな { field: value } 形式が広く使われています。より複雑な条件(範囲指定や複数条件の組み合わせなど)を扱う場合には、$eq をはじめとする比較演算子を明示的に指定するとよいでしょう。

  1. C++で%演算子を使わずに3と5の倍数を判定する方法

    通常、ある数が3や5の倍数であるかどうかを調べるには、% 演算子(剰余演算子)を使えば簡単に実装できます。しかし、この問題では % 演算子を使用することが禁止されています。そこで本記事では、+ 演算子(加算)を活用するアプローチを紹介します。考え方はシンプルで、「前の倍数に3または5を足せば次の倍数になる」という性質を利用します。まずは具体例を見てみましょう。入力例と出力例入力15出力1 2 3 - Multiple of 3 4 5 - Multiple of 5 6 - Multiple of 3 7 8 9 - Multiple of 3 10 - Multiple of 5 11 12

  2. C++で「/」演算子を使わずに除算を行う方法

    はじめにこのチュートリアルでは、C++において除算演算子「/」を使用せずに数値の割り算を行う方法を解説します。2つの数値が与えられ、プログラムは除算の結果(商)を返す必要があります。ここでは、減算演算子「-」を繰り返し利用することで除算を実現するアプローチを紹介します。アルゴリズムの手順被除数(割られる数)と除数(割る数)を初期化します。被除数が0の場合は、そのまま0を返します。被除数と除数の符号を確認し、結果が負になるかどうかを記録しておきます。商を格納するカウンターを0で初期化します。被除数が除数以上である間、以下の処理を繰り返すループを作成します。被除数から除数を引き、その結果を被除数に