【MongoDB】配列内の値を指定して一致するドキュメントを検索するクエリ
$in演算子とは
配列フィールドに複数の候補値のいずれかが含まれるドキュメントを検索したい場合、MongoDBでは$in演算子を使用します。まずは、サンプルとなるドキュメントを挿入してコレクションを作成してみましょう。
> db.demo511.insertOne({"ListOfProject":["Library Management System","Hospital Management System"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e88473a987b6e0e9d18f585")
}
> db.demo511.insertOne({"ListOfProject":["Online Web Tracking","Library Management System"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e884751987b6e0e9d18f586")
}
> db.demo511.insertOne({"ListOfProject":["Online Shopping Cart","Hospital Management System"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e884776987b6e0e9d18f587")
}コレクション内の全ドキュメントを確認する
find()メソッドを使用して、作成したコレクション内のすべてのドキュメントを表示します。
> db.demo511.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e88473a987b6e0e9d18f585"), "ListOfProject" : [ "Library Management System", "Hospital Management System" ] }
{ "_id" : ObjectId("5e884751987b6e0e9d18f586"), "ListOfProject" : [ "Online Web Tracking", "Library Management System" ] }
{ "_id" : ObjectId("5e884776987b6e0e9d18f587"), "ListOfProject" : [ "Online Shopping Cart", "Hospital Management System" ] }$in演算子で一致するドキュメントを検索する
続いて、配列内に「Hospital Management System」または「Online Shopping Cart」のいずれかが含まれるドキュメントを検索するクエリを見てみましょう。
> db.demo511.find({ "ListOfProject":{$in:["Hospital Management System","Online Shopping Cart"]}});このクエリを実行すると、条件に一致した次の2件のドキュメントが出力されます。
{ "_id" : ObjectId("5e88473a987b6e0e9d18f585"), "ListOfProject" : [ "Library Management System", "Hospital Management System" ] }
{ "_id" : ObjectId("5e884776987b6e0e9d18f587"), "ListOfProject" : [ "Online Shopping Cart", "Hospital Management System" ] }ポイントまとめ
- $in演算子は、指定した配列内の値のいずれかに一致するドキュメントを返します。
- 配列フィールドに対して使用すると、配列要素のどれか1つでも条件値と一致していればヒットします。
- 複数の候補値を一度に指定できるため、OR条件の代替としても効率的に使えます。
-
特定のFirstNameとLastNameを持つドキュメントを検索するMongoDBクエリの書き方
はじめにMongoDBで特定のFirstNameとLastNameを持つドキュメントを検索するには、$and演算子と$in演算子を組み合わせて使用します。この記事では、実際のコード例を通して、find()メソッドでこの条件を実装する方法を解説します。サンプルコレクションの作成まず、insertOne()メソッドを使ってドキュメントを含むコレクションを作成しましょう。> db.demo692.insertOne({FirstName:"Chris","LastName":"Brown"}); { "acknowl
-
MongoDBで特定の値より大きい配列要素を持つドキュメントを照会する方法($elemMatch活用)
MongoDBで配列内の値を条件に照合するにはMongoDBでは、$elemMatch 演算子を使用することで、指定したすべてのクエリ条件に一致する要素が少なくとも1つ含まれる配列フィールドを持つドキュメントを照合できます。ここでは、配列内の値が特定の値より大きいドキュメントを検索する方法を、具体的なサンプルコードとともに解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。> db.demo701.insertOne({ListOfValues:[100,200,300]}); { acknowledged : true, ins