MongoDBで特定の値を含む配列フィールドを持つドキュメントを検索する方法
MongoDBでは、find()メソッドを使うことで、配列フィールドに特定の値が含まれているドキュメントを簡単に検索できます。配列フィールドに対して値を直接指定するだけで、その値を含むすべてのドキュメントが抽出されます。
基本構文
db.yourCollectionName.find({"yourArrayFieldName":"yourValue"},.......N).pretty();この構文では、配列フィールド名をキーとして検索したい値を指定します。MongoDBは配列内のいずれかの要素が指定した値と一致すれば、そのドキュメントを結果として返します。
サンプルコレクションの作成
実際に動作を確認するために、ドキュメントを含むコレクションを作成しましょう。以下のクエリを実行してコレクションを作成します。
> db.findSpecificValue.insertOne({"StudentId":1,"StudentName":"Larry","FavouriteSubject":["C","C++","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6e8996140577d89182b8d0")
}
> db.findSpecificValue.insertOne({"StudentId":2,"StudentName":"Larry","FavouriteSubject":["MongoDB","MySQL","SQL Server"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6e89b1140577d89182b8d1")
}登録済みドキュメントの確認
まず、find()メソッドを使ってコレクション内のすべてのドキュメントを表示してみましょう。実行するクエリは以下のとおりです。
> db.findSpecificValue.find().pretty();
実行結果は次のようになります。
{
"_id" : ObjectId("5c6e8996140577d89182b8d0"),
"StudentId" : 1,
"StudentName" : "Larry",
"FavouriteSubject" : [
"C",
"C++",
"Java"
]
}
{
"_id" : ObjectId("5c6e89b1140577d89182b8d1"),
"StudentId" : 2,
"StudentName" : "Larry",
"FavouriteSubject" : [
"MongoDB",
"MySQL",
"SQL Server"
]
}特定の値を含む配列を持つドキュメントを検索する
それでは本題のクエリです。ここでは、FavouriteSubjectフィールドに「MongoDB」という値が含まれているドキュメントを検索します。
> db.findSpecificValue.find({"FavouriteSubject":"MongoDB"}).pretty();実行結果は以下のとおりです。
{
"_id" : ObjectId("5c6e89b1140577d89182b8d1"),
"StudentId" : 2,
"StudentName" : "Larry",
"FavouriteSubject" : [
"MongoDB",
"MySQL",
"SQL Server"
]
}まとめ
このように、MongoDBでは配列フィールドに対して値を直接指定するだけで、その値を要素として持つドキュメントを検索できます。特別な演算子は不要で、非常にシンプルな記述で実現できるのが特徴です。なお、より複雑な条件(複数の値すべてを含む配列の検索など)が必要な場合は、$all演算子や$elemMatch演算子を活用するとよいでしょう。
-
MongoDBで特定の文字列を含むドキュメントを検索する方法($regexの使い方)
MongoDBで特定の文字列を含むドキュメントを見つける方法MongoDBで特定の文字列が含まれるドキュメントを検索したい場合、find()メソッドと$regex演算子を組み合わせて使用します。$regexを使うことで、部分一致や大文字・小文字を区別しない柔軟な検索が可能になります。この記事では、実際のコレクションを作成しながら、特定の文字列を含むドキュメントを抽出する手順を解説します。1. テスト用コレクションとドキュメントの作成まず、insertOne()メソッドを使ってサンプルコレクション「demo597」にドキュメントを挿入します。> db.demo597.insertOne({
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "