MongoDBで複数のドキュメントを検索する方法|$in演算子の使い方を解説
MongoDBで特定の複数の値に一致するドキュメントを一度に検索したい場合、$in演算子を使用します。$inは、指定した配列内のいずれかの値に一致するドキュメントをすべて取得できる便利な比較演算子です。
この記事では、実際にコレクションを作成し、$in演算子を使って複数のドキュメントを検索する手順を具体例とともに解説します。
サンプルコレクションの作成
まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成します。以下の例では「demo161」というコレクションに4件のクライアント情報を挿入しています。
> db.demo161.insertOne({"ClientId":101,"ClientName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577cafdf09dd6d0853a09")
}
> db.demo161.insertOne({"ClientId":102,"ClientName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577d0fdf09dd6d0853a0a")
}
> db.demo161.insertOne({"ClientId":103,"ClientName":"David","ClientAge":35});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577dffdf09dd6d0853a0b")
}
> db.demo161.insertOne({"ClientId":104,"ClientName":"Carol","ClientAge":31});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577eefdf09dd6d0853a0c")
}登録済みドキュメントの確認
find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。
> db.demo161.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e3577cafdf09dd6d0853a09"), "ClientId" : 101, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e3577d0fdf09dd6d0853a0a"), "ClientId" : 102, "ClientName" : "David" }
{ "_id" : ObjectId("5e3577dffdf09dd6d0853a0b"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3577eefdf09dd6d0853a0c"), "ClientId" : 104, "ClientName" : "Carol", "ClientAge" : 31 }$in演算子で複数のドキュメントを検索する
MongoDBで複数のドキュメントを検索するには、find()メソッドの条件に$in演算子を指定します。配列として渡した値のいずれかに一致するドキュメントだけが取得されます。
以下の例では、ClientIdが「101」「103」「104」のいずれかに一致するドキュメントを検索しています。
> db.demo161.find({ClientId:{$in:[101,103,104]}});実行結果は次のとおりです。ClientIdが102のドキュメントは条件に含まれていないため、出力から除外されていることがわかります。
{ "_id" : ObjectId("5e3577cafdf09dd6d0853a09"), "ClientId" : 101, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e3577dffdf09dd6d0853a0b"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3577eefdf09dd6d0853a0c"), "ClientId" : 104, "ClientName" : "Carol", "ClientAge" : 31 }まとめ
MongoDBで複数のドキュメントを効率的に検索したい場合は、$in演算子を使うのが最もシンプルな方法です。{ フィールド名: { $in: [値1, 値2, ...] } }という形式で記述することで、配列内のいずれかの値に一致するドキュメントをまとめて取得できます。OR条件を個別に書くよりもコードが簡潔になり、可読性も向上します。
-
MongoDBのaggregate()を使って複数のドキュメントをマージ(統合)する方法
MongoDBで複数のドキュメントをマージするには? MongoDBで複数のドキュメントを1つにマージ(統合)したい場合は、aggregate()メソッドを使用します。集計パイプラインの各ステージ($sort、$unwind、$group、$addFields、$projectなど)を組み合わせることで、特定のフィールドをキーにしてドキュメントをグループ化し、配列や数値をまとめることができます。 ここでは、実際にサンプルコレクションを作成しながら、具体的な手順を解説します。 1. コレクションの作成とドキュメントの挿入 まず、insertOne()メソッドを使ってサンプルコレクション「dem
-
MongoDBで$in演算子を使って特定の複数ドキュメントを取得する方法
MongoDBで特定の複数のドキュメントを一度に取得したい場合、$in 演算子を使用します。$in は、指定した配列内のいずれかの値に一致するドキュメントだけを抽出できる便利な比較演算子です。この記事では、実際にコレクションを作成し、$in を使って特定の複数ドキュメントを取得する手順を順番に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使ってサンプル用のコレクション「demo593」にドキュメントを挿入します。> db.demo593.insertOne({id:1,Name:Chris});{ acknowledged : tr