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

MongoDBの$eq演算子の代替方法:find()だけで同じ結果を得るテクニック

MongoDBにおける$eq演算子の代替アプローチ

MongoDBで等価条件(イコール)による検索を行う場合、$eq演算子を明示的に使用しなくても、find()メソッドにマッチさせたい値を直接指定するだけで同じ結果を得ることができます。この記事では、その具体的な手順をサンプルコード付きで解説します。

1. コレクションの作成とドキュメントの挿入

まず、insertOne()メソッドを使って、名前のリストを含むドキュメントをコレクションに挿入し、テスト用データを作成しましょう。

> db.demo145.insertOne({"ListOfNames":["Chris","David","Mike"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e32f37bfdf09dd6d08539bb")
}
> db.demo145.insertOne({"ListOfNames":["Bob","John"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e32f384fdf09dd6d08539bc")
}

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

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

> db.demo145.find();

上記のクエリを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e32f37bfdf09dd6d08539bb"), "ListOfNames" : [ "Chris", "David", "Mike" ] }
{ "_id" : ObjectId("5e32f384fdf09dd6d08539bc"), "ListOfNames" : [ "Bob", "John" ] }

3. $eq演算子と同等の等価検索クエリ

続いて、「John」という名前を含むドキュメントを検索するクエリを見てみましょう。$eq演算子を使わず、フィールド名に対してマッチ値を直接指定するだけで実現できます。

> db.demo145.find({"ListOfNames":"John"});

実行すると、以下の出力が得られます。

{ "_id" : ObjectId("5e32f384fdf09dd6d08539bc"), "ListOfNames" : [ "Bob", "John" ] }

ポイント解説

この例のように、フィールドの値が配列である場合でも、指定した値が配列内のいずれかの要素と一致していれば、そのドキュメントは検索結果として返されます。つまり、{ "field": { "$eq": value } }と書かなくても、{ "field": value }というシンプルな形式で同等の等価条件を表現できるのです。コードの可読性を高めたい場合や、簡潔なクエリを好む場合に、この書き方は非常に便利です。

  1. MongoDBでレコード数(ドキュメント数)を取得する方法

    MongoDBでコレクション内のレコード数(ドキュメント数)を取得するには、count()メソッドを使用します。この記事では、実際にコレクションを作成し、レコード数を取得する手順を解説します。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成しましょう。> db.demo697.insertOne({Name:Chris,Age:21}); { acknowledged : true, insertedId : ObjectId(5ea6d7d1551299a9f98c9395) } > db.demo

  2. MongoDBのaggregateで$groupを使って複数の集計結果を一度に取得する方法

    MongoDBでは、$facetと$groupを組み合わせることで、1回のaggregateクエリで複数の集計結果を同時に取得できます。この記事では、実際のコード例を通じてその方法を解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。以下のようにinsertOne()メソッドを使ってデータを挿入します。> db.demo765.insertOne( ... { ... Name:John, ... Category:ComputerScience, ... SubjectName:MongoDB,