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

特定のFirstNameとLastNameを持つドキュメントを検索するMongoDBクエリの書き方

はじめに

MongoDBで特定のFirstNameとLastNameを持つドキュメントを検索するには、$and演算子と$in演算子を組み合わせて使用します。この記事では、実際のコード例を通して、find()メソッドでこの条件を実装する方法を解説します。

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

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

> db.demo692.insertOne({FirstName:"Chris","LastName":"Brown"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea585dca7e81adc6a0b396a")
}
> db.demo692.insertOne({FirstName:"John","LastName":"Brown"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea585e2a7e81adc6a0b396b")
}
> db.demo692.insertOne({FirstName:"John","LastName":"Smith"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea585e7a7e81adc6a0b396c")
}
> db.demo692.insertOne({FirstName:"John","LastName":"Doe"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea585efa7e81adc6a0b396d")
}
> db.demo692.insertOne({FirstName:"Adam","LastName":"Smith"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea585faa7e81adc6a0b396e")
}

登録済みドキュメントの確認

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

> db.demo692.find();

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

{ "_id" : ObjectId("5ea585dca7e81adc6a0b396a"), "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e2a7e81adc6a0b396b"), "FirstName" : "John", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e7a7e81adc6a0b396c"), "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : ObjectId("5ea585efa7e81adc6a0b396d"), "FirstName" : "John", "LastName" : "Doe" }
{ "_id" : ObjectId("5ea585faa7e81adc6a0b396e"), "FirstName" : "Adam", "LastName" : "Smith" }

$andと$inを使った検索クエリ

ここからが本題です。特定のFirstNameとLastNameを持つドキュメントを検索するには、以下のようにクエリを記述します。

> db.demo692.find({$and:[ {FirstName: {$in: ["Chris", "John"]}},
... {LastName:{$in:["Brown", "Smith"]}}
... ]
... }
... );

クエリの実行結果

このクエリを実行すると、以下のドキュメントが取得されます。

{ "_id" : ObjectId("5ea585dca7e81adc6a0b396a"), "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e2a7e81adc6a0b396b"), "FirstName" : "John", "LastName" : "Brown" }
{ "_id" : ObjectId("5ea585e7a7e81adc6a0b396c"), "FirstName" : "John", "LastName" : "Smith" }

クエリの仕組みの解説

このクエリがどのように動作するのか、ポイントを整理してみましょう。

$and演算子: 複数の条件をすべて満たすドキュメントのみを抽出します。この例では「FirstNameの条件」と「LastNameの条件」の両方を満たす必要があります。

$in演算子: 指定した配列内のいずれかの値に一致するドキュメントを抽出します。FirstNameは「Chris」または「John」、LastNameは「Brown」または「Smith」のいずれかに一致するものが対象です。

その結果、FirstNameが「John」でLastNameが「Doe」のドキュメントは、LastNameが条件に合致しないため除外されます。同様に、FirstNameが「Adam」でLastNameが「Smith」のドキュメントも、FirstNameが条件に合致しないため結果には含まれません。

このように、$andと$inを組み合わせることで、複数フィールドに対する柔軟な複合条件検索を簡単に実現できます。


  1. MongoDBで特定の値より大きい配列要素を持つドキュメントを照会する方法($elemMatch活用)

    MongoDBで配列内の値を条件に照合するにはMongoDBでは、$elemMatch 演算子を使用することで、指定したすべてのクエリ条件に一致する要素が少なくとも1つ含まれる配列フィールドを持つドキュメントを照合できます。ここでは、配列内の値が特定の値より大きいドキュメントを検索する方法を、具体的なサンプルコードとともに解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。> db.demo701.insertOne({ListOfValues:[100,200,300]}); { acknowledged : true, ins

  2. MongoDBで特定の値以上のドキュメントを検索する方法($gte演算子の使い方)

    MongoDBで特定の値「以上」の値を持つドキュメントを検索したい場合、比較演算子 $gte(greater than or equal)を使用します。$gte は指定した値と等しいか、それより大きい値に一致するドキュメントを抽出できる便利な演算子です。$gteを使った基本構文db.yourCollectionName.find({yourFieldName:{$gte:yourValue}});コレクション名、フィールド名、基準となる値をそれぞれ置き換えて使用します。なお、「より大きい」値のみを取得したい場合は $gt を使いますが、ここでは「以上」を意味する $gte を採用しています。サ